模式对象GoF23种设计模式之创建型模式之建造者模式
工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下模式对象
一、概述
将一个复杂对象的构建与其表示分离开来,使得同样的构建进程可以创立不同的表示。
二、适用性
1.当创立复杂对象的算法应当独立于该对象的构成部分以及它们的装配方式的时候。
2.当结构进程必须答应被结构的对象有不同的表示的时候。
三、参与者
1.Builder:为创立一个Product对象的各个部件指定抽象接口。
2.ConcreteBuilder:实现Builder接口以结构和装配该产品的各个部件。
3.Director:结构一个使用Builder接口的对象。
4.Product:表示被结构的复杂对象。ConcreteBuilder创立该产品的外部表示并定义它的装配进程。包括定义构成部件的类,以及将这些部件装配成终究产品的接口。
四、类图
五、示例
Builder
package cn.lynn.builder; public interface IPersonBuilder { public void buildHead(); public void buildBody(); public void buildFoot(); public Person buildPerson(); }
ConcreteBuilder
package cn.lynn.builder; public class ManBuilder implements IPersonBuilder { private Person person; public ManBuilder() { person = new Man(); } @Override public void buildHead() { person.setHead("制作男人的头"); } @Override public void buildBody() { person.setBody("制作男人的身体"); } @Override public void buildFoot() { person.setFoot("制作男人的脚"); } @Override public Person buildPerson() { return person; } }
Director
package cn.lynn.builder; public class PersonDirector { public Person constructPerson(IPersonBuilder builder) { builder.buildHead(); builder.buildBody(); builder.buildFoot(); return builder.buildPerson(); } }
Product
package cn.lynn.builder; public class Person { private String head; private String body; private String foot; public String getHead() { return head; } public void setHead(String head) { this.head = head; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public String getFoot() { return foot; } public void setFoot(String foot) { this.foot = foot; } }
package cn.lynn.builder; public class Man extends Person { }
Test
package cn.lynn.builder; public class Test { public static void main(String[] args) { PersonDirector director = new PersonDirector(); Person person = director.constructPerson(new ManBuilder()); System.out.println(person.getHead()); System.out.println(person.getBody()); System.out.println(person.getFoot()); } }
Result
制作男人的头 制作男人的身体 制作男人的脚
文章结束给大家分享下程序员的一些笑话语录: 手机终究会变成PC,所以ip会比wm更加畅销,但是有一天手机强大到一定程度了就会发现只有wm的支持才能完美享受。就好比树和草,草长得再高也是草,时间到了条件成熟了树就会窜天高了。www.ishuo.cn
---------------------------------
原创文章 By
模式和对象
---------------------------------