Javaプログラミングのデザインのアイデア

 

 

 

 


クラスA {公共
    公共ボイドT1(){
        
    }
    
    公共ボイドT2(){
        
    }
}
 
 
T1()、T2()//クラスBの両方持ちたい 、T3()、T4()、T5()、T6()を機能
//良好クラスBの設計アプローチに比べ:代わりに、オブジェクト合成の優先度継承
パブリッククラスBを{延び
    公共ボイドT3(){
        
    }
    
    公共ボイドT4(){
        
    }
}
 
 
publicクラスのB2 {
    //組合せを1 -メモリに保存、遅い
    公共ボイドT1(){
        ;新しい新しいA()T1()
    }
 
    公共ボイドT2(){
        ;新しい新しいA()T2()
    }
 
    公共ボイドT3(){
 
    }
 
    公共ボイドT4( ){
 
    }
    
    //組み合わせ2 - Cライフサイクルの長さ(サイズメモリ占有時間)が、高速
    プライベートCをC =新しいC() ;
    public void t5(){
        c.t5();
    }
    public void t6(){
        c.t6();
    }
 
}
 
 
public class C {
    public void t5(){
        
    }
    
    public void t6(){
        
    }
}
public interface Api {
    public void t1();
}
 
 
 
public class Impl1 implements Api{
    @Override
    public void t1() {
        System.out.println("1111111111111111");
    }
}
 
public class Impl2 implements Api{
    @Override
    public void t1() {
        System.out.println("2222222222222");
    }
}
 
public class Client {
  public static void main(String[] args) throws Exception {
    Class c=Class.forName("cn.hncu.design.two.Impl2");
    Api api=(Api) c.newInstance();
    api.t1();
}

//同时与模块Client1,Client2交互的通用接口,,,这种设计不好,建议采用分成两个专用接口来做
public interface Api {
    //模块Client1访问的方法
        public abstract void t1();
        public abstract void t2();
        
        //模块Client2访问的方法
        public abstract void t3();
        public abstract void t4();
}
 
//与Client1模块交互的专用接口
public interface Api1 {
    public abstract void t1();
    public abstract void t2();
}
 
//与Client2模块交互的专用接口
public interface Api2 {
    public abstract void t3();
      public abstract void t4();
}
 
public class Client1 {
    public static void main(String[] args) {
        Api api = null;// 实现项目中,这里用类反射或工厂类创建出一个实现类对象
        api.t1();
        api.t2();
        api.t3();
        api.t4();
 
        // 专用接口的调用方式
        Api1 aapi = null;
        aapi.t1();
        aapi.t2();
        Api2 aapi2 = null;
        aapi2.t3();
        aapi2.t4();
    }
}
 
public class B {
    /*
    public void t(A a){
        System.out.println( a.t1() );
    }
    */
    
    //在依赖不是很严重的地方,可以考虑剪断依赖链---自己实现依赖对方获得的功能
    public String t1(){
        return "111111111";
    }
}
 
 

public class A {
      public String t1(){
           return "1111111111111";
       }
}
 
 
public class B {
    /*
    public void t(A a){
        System.out.println( a.t1() );
    }
    */
    
    //在依赖不是很严重的地方,可以考虑剪断依赖链---自己实现依赖对方获得的功能
    public String t1(){
        return "111111111";
    }
}
 

发布了0 篇原创文章 · 获赞 0 · 访问量 10

おすすめ

転載: blog.csdn.net/qq_25659953/article/details/103992390