2、建造者模式_適配器設計模式

一、建造者模式:
    工廠類模式提供的是建立單個類的模式,而建造者模式則是將各類產品集中起來進行管理,用來建立複合對象,所謂複合對象就是指某個類具備不一樣的屬性,其實建造者模式就是前面抽象工廠模式和最後的 Test 結合起來獲得的。
1.1 建造者模式類設計模式

public class Builder {
    private List<Sender> list=new ArrayList<Sender>();
    
    public void produceMailSender(int count){
        for(int i=0;i<count;i++){
            list.add(new MailSender());
        }
    }
    
    public void produceSmsSender(int count){
        for(int i=0;i<count;i++){
            list.add(new SmsSender());
        }
    }
}
View Code

1.2 測試類ide

public class TestBuilder {
    public static void main(String[] args) {
        Builder builder=new Builder();
        builder.produceMailSender(2) ;
    }
}    
View Code

二、適配器設計模式
    適配器模式將某個類的接口轉換成客戶端指望的另外一個接口表示, 目的是消除因爲接口不匹配所形成的類的兼容性問題。主要分爲三類:類的適配器模式對象的適配器模式接口的適配器模式
2.1類適配器Adapter1:
    將Source(自己是一個類,能夠將其理解爲某個業務類處理這樣的一個接口)類的接口,轉化成客戶端指望的另外一個接口(Targetable),目的是消除因爲接口不匹配所形成的類的兼容性問題測試

public class Source {
    public void method1() {
        System.out.println("這是原類Source類中的方法method1");
    }
}
    
public interface Targetable {
    /*與Source(原類)中的方法相同 */
    public void method1();

    /* 新類的方法 */
    public void method2();
}
//經過繼承Source類,實現Targetable接口,消除了Source類和接口Targetable之間不匹配的問題  
public class Adapter1 extends Source implements Targetable {
    public void method2() {
        System.out.println("這是目標接口targetable中的 method2方法!");
    }

}
View Code

2.2 對象適配器Adapter2:基本思路和類的適配器模式相同,只是將Adapter類作修改,此次不繼承 Source 類,而是持有 Source 類的實例,以達到解決兼容性的問題。ui

public class Adapter2  implements Targetable {
    private Source source;

    public Adapter2(Source source) {
        super();
        this.source = source;
    }

    public void method1() {
        source.method1();
    }

    public void method2() {
        System.out.println("this is the targetable method!");
    }

}
View Code

類適配器和對象適配器的測試類:this

public class Test {
    public static void main(String[] args) {
        /*類適配器測試:*/
        Targetable target=new Adapter1();
        target.method1();
        target.method2();
        /*對象的適配器模式*/    
        Source source=new Source();
        Targetable target2=new Adapter2(source);
        target2.method1();
        target2.method2();
        
    }
}
View Code

運行結果:spa

 

這是原類Source類中的方法method1
這是目標接口targetable中的 method2方法!
這是原類Source類中的方法method1
this is the targetable method!
View Code

 

2.3 接口的適配器是這樣的:有時咱們寫的一個接口中有多個抽象方法,當咱們寫該接口的實現類時,必須實現該接口的全部方法,這明顯有時比較浪費,由於並非全部的方法都是咱們須要的,有時只須要某一些,此處爲了解決這個問題,咱們引入了接口的適配器模式,藉助於一個抽象類,該抽象類實現了該接口,實現了全部的方法,而咱們不和原始的接口打交道,只和該抽象類取得聯繫,因此咱們寫一個類,繼承該抽象類,重寫咱們須要的方法就行。


設計

相關文章
相關標籤/搜索