我希望是这样,A类某个方法中的后半部分代码是可变的,可以由B类来填充,也可以由C类,甚至D类来填充!请问怎么实现?

解决方案 »

  1.   

    那你这样
    class a{
      void metrod1(){
        ...
        new interface b;
        b.metrod2();
      }
    }a未实现的代码部分由b实现,b是一个接口,派生出类c,d,e,于是b的metrod2的内容就由你的接口实例化时构建的子类决定
      

  2.   

    public abstract class Demo
    {
    public void method()
    {
                  //固定的代码
    }

    abstract public void method1() ;
    }然后B 、C 类就继承这个类,然后就可以实现你的目的了吧。。
      

  3.   

    class B implements Test1
    class C implements Test1
    class D implements Test1class A{
        public void myfunction(Test1 test){
            
        }
    }
    这样就可以了
      

  4.   

    按照楼主说的应该是一个Template Method模式。
    abstract class Template {
       public void runAlgorithm() {
           ......
           method1();
           ......
           method2();
           ......
       }   public abstract method1();
       public abstract method2();
    }
    class A1 extends Template {
       public method1() { ... }
       public method2() { ... }
    }class A2 extends Template {
       public method1() { ... }
       public method2() { ... }
    }class A3 extends Template {
       public method1() { ... }
       public method2() { ... }
    }使用时
    Template t = new A1();
    t.runAlgorithm();
      

  5.   

    当然也可以使用strategy模式
    interface Strategy {
       void method1();
       void method2();
    }class T {
       private Strategy s;   public T(Strategy s) {
          this.s = s;
       }   public void runAlgorithm() {
          ...
          s.method1();
          ...
          s.method2();
          ...
       }
    }class A1 implements Strategy {
       public void method1() { ... }
       public void method2() { ... }
    }class A2 implements Strategy {
       public void method1() { ... }
       public void method2() { ... }
    }class A3 implements Strategy {
       public void method1() { ... }
       public void method2() { ... }
    }使用时
    T = new T(new A3);
    t.runAlgorithm();