设计模式--建造者模式--简记
建造者(Builder)模式
定義:將一個(gè)復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。
通常包括的角色:
1.Builder:給出一個(gè)抽象的接口,以規(guī)范產(chǎn)品對象的各個(gè)組成成分的建造。
這個(gè)接口規(guī)定要實(shí)現(xiàn)復(fù)雜對象的哪些部分的創(chuàng)建,不涉及具體的對象部件的創(chuàng)建。
2.ConcreteBuilder:實(shí)現(xiàn)Builder接口,針對不同的商業(yè)邏輯,具體化復(fù)雜對象的各部分的創(chuàng)建。在建造完成后,提供產(chǎn)品的實(shí)例。
3.Director:調(diào)用具體建造者來創(chuàng)建復(fù)雜對象的各個(gè)部分,在指導(dǎo)者中不涉及具體產(chǎn)品的信息,只負(fù)責(zé)保證對象各部分完整創(chuàng)建或按某種順序創(chuàng)建。
4.Product:要創(chuàng)建的復(fù)雜的對象
使用場景:
1.需要生成的對象具有復(fù)雜的內(nèi)部結(jié)構(gòu)
2.需要生成的對象內(nèi)部屬性本身相互依賴
1 //要創(chuàng)建的復(fù)雜對象:Product 2 //建立一個(gè)人物對象Person 3 public class Person { 4 5 private String head; 6 private String body; 7 private String foot; 8 9 public String getHead() { 10 return head; 11 } 12 13 public void setBody(String head) { 14 this.head = head; 15 } 16 17 public String getHead() { 18 return body; 19 } 20 21 public void setBody(String body) { 22 this.body = body; 23 } 24 25 public String getFoot() { 26 return foot; 27 } 28 29 public void setFoot(String foot) { 30 this.foot = foot; 31 } 32 33 } 34 35 36 //定義一個(gè)抽象接口:Builder 37 public interface PersonBuilder { 38 void buildHead(); 39 void buildBody(); 40 void buildFoot(); 41 Person buildPerson(); 42 } 43 44 45 //實(shí)現(xiàn)Builder接口:ConcreteBuilder 46 public class ManBuilder implements PersonBuilder { 47 48 Person person; 49 50 public ManBuilder() { 51 person = new Person(); 52 } 53 54 public void buildHead() { 55 person.setHead("build head"); 56 } 57 58 public void buildBody() { 59 person.setHead("build body"); 60 } 61 62 public void buildFoot() { 63 person.setHead("build foot"); 64 } 65 66 public Person buildPerson() { 67 return person; 68 } 69 70 } 71 72 73 //調(diào)用構(gòu)造者來創(chuàng)建復(fù)雜對象的各個(gè)部分:Director 74 public class PersonDirector { 75 public Person constructPerson(PersonBuilder personBuilder) { 76 personBuilder.buildHead(); 77 personBuilder.buildBody(); 78 personBuilder.buildFoot(); 79 return personBuilder.buildPerson(); 80 } 81 } 82 83 84 //Test 85 public class Test { 86 87 public static void main(String[] args) { 88 PersonDirector pd = new PersonDirector(); 89 Person person = pd.constructPerson(new ManBuilder()); 90 System.out.println(person.getHead()); 91 System.out.println(person.getBody()); 92 System.out.println(person.getFoot()); 93 } 94 95 }?
詳情:https://www.cnblogs.com/kangsir/p/6653233.html
?
轉(zhuǎn)載于:https://www.cnblogs.com/fqfanqi/p/8519768.html
總結(jié)
以上是生活随笔為你收集整理的设计模式--建造者模式--简记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj2376 区间贪心 挑战程序设计竞
- 下一篇: JS 判断输入是否为数字