一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java運用設計模式中的建造者模式構建項目的實例解析

Java運用設計模式中的建造者模式構建項目的實例解析

2020-04-20 13:56匆忙擁擠repeat JAVA教程

這篇文章主要介紹了Java運用設計模式中的建造者模式構建項目的實例解析,建造者模式對外隱藏創建過程的產品,使用組合的方式,由指揮者來決定建造的流程,需要的朋友可以參考下

1.建造者模式概念
定義: 將一個復雜的對象構建與其表示相分離,使得同樣的構建過程可以創建不同的表示;
核心 : 構建與表示分離,同構建不同表示
區別于 抽象工廠模式 :
(1)與抽象工廠模式 相似,因為它也可以創建復雜對象。主要的區別是建造者模式著重于 一步步構造一個復雜對象,關注的是零件類型和裝配工藝的順序 。而抽象工廠模式著重于多個系列的產品對象(簡單的或是復雜的)。建造者模式在最后的一步返回產品,而對于抽象工廠來說,產品是立即返回的。
(2)在建造者模式里,有個指導者,由指導者來管理建造者,用戶是與指導者聯系的,指導者聯系建造者最后得到產品。即建造模式可以強制實行一種分步驟進行的建造過程。

2.它的角色
(1)抽象建造者(Builder)角色:該角色 是用于規范產品的各個組成部分,并進行抽象,一般獨立于應用程序的邏輯。
(2)具體建造者( ConcreteBuilder )角色:
該角色實 現出抽象建造者中定義的所有方法,并且返回一個組建好的產品實例。
(3)產品( Product )角色:
該角色是建造中的復雜對象,一個系統中會有多于一個的產品類,這些產品并不一定有公共的接口,完全可以是不相關聯的。
(4)指導者(Director)角色:
該角色負責安排已有的模塊的順序,然后告訴建造者 Builder開始建造 。 

3.實例

?
1
2
3
4
5
6
public interface Builder {
 void buildPartA();
 void buildPartB();
 void buildPartC();
   
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class BuilderImpl implements Builder {
   
 @Override
 public void buildPartA() {
  System.out.println("建造部件A");
 }
  
 @Override
 public void buildPartB() {
  System.out.println("建造部件B");
 }
  
 @Override
 public void buildPartC() {
  System.out.println("建造部件C");
 }
  
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class BuilderImpl2 implements Builder {
   
 @Override
 public void buildPartA() {
  System.out.println("建造部件AA");
 }
  
 @Override
 public void buildPartB() {
  System.out.println("建造部件BB");
 }
  
 @Override
 public void buildPartC() {
  System.out.println("建造部件CC");
 }
  
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * 指揮者:指導 如何 建造
 * 組合Builder
 */
public class Director {
 private Builder builder;
   
 public Director(Builder builder) {
  this.builder = builder;
 }
 /**
  * 建造方法:定義了建造的流程
  * 如果需要其他流程來實現,再new一個指揮者Director就可
  */
 public void construct() {
  System.out.println("director 指揮 builder進行建造");
  builder.buildPartA();
  builder.buildPartB();
  builder.buildPartC();
 }
   
}


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Director2 {
 private Builder builder;
   
 public Director2(Builder builder) {
  this.builder = builder;
 }
 /**
  * 建造方法:定義了建造的流程
  * 如果需要其他流程來實現,再new一個指揮者Director就可
  */
 public void construct() {
  System.out.println("director2 指揮 builder進行建造");
  builder.buildPartB();
  builder.buildPartC();
  builder.buildPartA();
 }
   
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Test {
 public static void main(String[] args) {
  Builder builder = new BuilderImpl();
  Director director = new Director(builder);
  /*
   * 同樣的構建過程,不同的模塊(buildPartA、buildPartB、buildPartC)實現, new一個builder的實現
   * 不同的構建過程,new 一個director
   * 不同的構建過程,不同的模塊實現, new director,new builder
   */
    
  director.construct();
    
  System.out.println("");
    
  Builder builder2 = new BuilderImpl2();
  Director director2 = new Director(builder2);
  director2.construct();
    
  System.out.println("");
    
  Builder builder3 = new BuilderImpl2();
  Director2 director3 = new Director2(builder3);
  director3.construct();
 }
}

打印:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
director 指揮 builder進行建造
建造部件A
建造部件B
建造部件C
  
director 指揮 builder進行建造
建造部件AA
建造部件BB
建造部件CC
  
director2 指揮 builder進行建造
建造部件BB
建造部件CC
建造部件AA

4.優缺點
(1)優點:
A.可以讓你改變產品的內部表示。
B.封裝建筑和代表性的代碼。
C.提供超過施工工藝的步驟的控制。
(2)缺點:
A.需要創造各種不同類型的產品單獨ConcreteBuilder。

5.使用場景:
(1)當創建復雜對象的算法應該獨立于該對象的組成部分以及它們的裝配方式時。
(2)當構造過程必須允許被構造的對象有不同表示時( 相同的方法,不同的執行順序,產生不同的結果時)。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色噜噜 男人的天堂在线观看 | 欧美在线观看视频一区 | 四虎影院新地址 | 日剧整部剧护妻狂魔免费观看全集 | 91国产在线视频 | 女同69式互添在线观看免费 | 高清国产精品久久久久 | 图片专区亚洲欧美另类 | 天天干天天色综合 | 草草在线免费视频 | 男人猛进女人屁股免费 | 国产免费一区二区三区 | 青青青国产手机在线播放 | 韩日视频在线观看 | ssni-497新任美脚女教师 | 日产乱码2021永久手机版 | 日本嫩模| 晚上禁用的十大黄台视频 | 男女爆操 | 男人的天堂va | 久久视频这里只精品99热在线观看 | 日韩大片在线 | 日本制服丝袜 | 男人天堂日韩 | 日韩在线 在线播放 | 国产成人精品一区二三区在线观看 | 天天干狠狠操 | 日本深夜视频 | 日韩欧美一区二区在线观看 | 国产午夜亚洲精品一区网站 | 强行扒开美女大腿挺进 | 日本欧美不卡一区二区三区在线 | 亚洲精品视频久久 | 国产成人v爽在线免播放观看 | 性夜影院午夜看片 | 日韩精品一区二区三区老鸭窝 | 日本公与妇中文在线 | 秋霞理论在一l级毛片 | 亚洲国产精品一区二区三区久久 | 欧美丰满大乳大屁在线观看股 | 精品综合久久久久久97超人 |