建造者模式
来源:互联网 发布:网络作家收入怎么算 编辑:程序博客网 时间:2024/06/08 14:31
Separate the construction of a complex object from its representation so that the same construction process can create different representations.
将一个复杂的对象的建造过程与他的表示分离,使得同样的建造过程可以创建不同的表示。
题目:
请用生成器模式(BUILDER)设计一个小人玩具生产线,具体描述如下:
现阶段小人玩具生产线需要生成小头爸爸玩具和大头儿子玩具共2种,在将来可能会增加新人物。
其中小头爸爸玩具包含“小的头”, “强壮的身体”, “长的左手”, “长的右手”, “长的左脚”, “长的右脚”6个部分;
大头儿子玩具包含“大的头”, “小小的身体”, “短的左手”, “短的右手”, “短的左脚”, “短的右脚”6个部分;
为了玩具组装方便,6个部分的生产顺序为:身体(body)->头(head)->左手(armLeft)->右手(armRight)->左脚(legLeft)->右脚(LegRight)
题目中小人每一部分的生产只需要通过输出语句表示即可,比如:生成了长的左手,就用输出语句输出“长的左手”即可
UML类图:
GitHub源码:https://github.com/YEN-GitHub/PatternDemo/tree/master/src/CreationalPattern/builder
package CreationalPattern.builder.demo1;import java.util.ArrayList;/** * Created by yangenneng on 2017-04-05 11:17 * Abstract:人 */public class Person { private ArrayList<String> pParts=new ArrayList<>(); private ArrayList<String> pPartName=new ArrayList<String>(){{add("头");add("身体");add("手");add("脚");}}; public void addPart(String partValue){//增加身体的一部分 pParts.add(partValue); } public void ShowPerson(){ System.out.println("小人的整体结构为:"); for (int i = 0; i < pPartName.size(); i++) { System.out.println(pPartName.get(i)+":"+pParts.get(i)); } }}
package CreationalPattern.builder.demo1;/** * Created by yangenneng on 2017-04-05 11:27 * Abstract: */public interface IBuilder { void buildHead();//头 void buildBody();//身体 void buildArm();//手 void buildLeg();//脚}
package CreationalPattern.builder.demo1;/** * Created by yangenneng on 2017-04-05 11:28 * Abstract:瘦子 */public class ThinPerson implements IBuilder { Person person=new Person(); @Override public void buildHead() { person.addPart("方的"); } @Override public void buildBody() { person.addPart("瘦的"); } @Override public void buildArm() { person.addPart("短的"); } @Override public void buildLeg() { person.addPart("细的"); } public Person getPerson(){return person;}}
package CreationalPattern.builder.demo1;/** * Created by yangenneng on 2017-04-05 11:30 * Abstract:胖子 */public class FatPerson implements IBuilder { Person person=new Person(); @Override public void buildHead() { person.addPart("圆的"); } @Override public void buildBody() { person.addPart("胖的"); } @Override public void buildArm() { person.addPart("长的"); } @Override public void buildLeg() { person.addPart("粗的"); } public Person getPerson(){return person;}}
package CreationalPattern.builder.demo1;/** * Created by yangenneng on 2017-04-05 11:34 * Abstract: */public class PersonDirector { public void builderP(IBuilder iBuilder) { iBuilder.buildHead(); iBuilder.buildBody(); iBuilder.buildArm(); iBuilder.buildLeg(); }}
package CreationalPattern.builder.demo1;/** * Created by yangenneng on 2017-04-05 11:31 * Abstract: */public class Client { public static void main(String[] args) { Person person=null; System.out.println("--------------创建一个胖子---------------------"); FatPerson fatPerson=new FatPerson(); new PersonDirector().builderP(fatPerson); person=fatPerson.getPerson(); person.ShowPerson(); System.out.println("--------------创建一个瘦子---------------------"); ThinPerson thinPerson=new ThinPerson(); new PersonDirector().builderP(thinPerson); person=thinPerson.getPerson(); person.ShowPerson(); }}
0 0
- Builder 建造者模式
- 建造者模式
- 设计模式-------建造者
- 建造者模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式
- 建造者模式 - builder
- 建造者模式
- Builder建造者模式
- 建造者模式(Builder)
- 建造者模式(builder)
- 建造者模式
- java建造者模式
- 建造者模式
- 建造者模式
- 建造者模式(Builder)
- 建造者模式
- String转int转String
- 安卓开发所使用到的一些工具
- Objective-C的内存管理学习记录
- 国内较快的maven镜像
- C++ STL笔记,迭代器,vector
- 建造者模式
- 默念。。。
- 初识JVM
- 5分钟直观了解JAVA内存泄露
- 数据库事务隔离级别
- 何为安卓
- android ScrollView 中子控件设置高度后不起作用的解决方法
- STM32 RTC
- vim-三种模式/环境配置