package builderPattern;/* * 画一个小人 */public class Commonly {public static void main(String[] args) {Person person = new Person();System.out.println("画一个小人:");person.drawHand("小头");person.drawHand("大手");person.drawFoot("大脚");//再画一个小人System.out.println("再画一个小人:");person.drawHand("大头");person.drawHand("小手");//对  没错忘了画脚了}}/* * 人 类  可以画 头  手   脚  */class Person{/* * 画头 */public void drawHead(String head){System.out.println(head);}/* * 画手 */public void drawHand(String hand){System.out.println(hand);}/* * 画脚 */public void drawFoot(String foot){System.out.println(foot);}}



package builderPattern;/** * 建造者模式: * 讲一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的标示 *  *@author LiMing  E-mail:1151143484@qq.com *@date 2017年6月17日  上午10:50:30 */public class BuilderPattern {public static void main(String[] args) {PersonSmallBuilder builder = new PersonSmallBuilder();PersonBigBuilder bigBuilder = new PersonBigBuilder();Director director = new Director(builder);Director director2 = new Director(bigBuilder);System.out.println("建造小人1:");director.CreatPerson();System.out.println("建造小人2:");director2.CreatPerson();/** * 总结: * PersonsBuilder是什么? * PersonsBuilder是对各个部件指定的抽象接口  * PersonSmallBuilder是什么? * PersonSmallBuilder是具体的构建者 实现PersonsBuilder接口 构造和装配各个部件 * Director是什么 ? * Director是指挥者 根据用户需求构造产品(根据用户构造方法中传入的Builder具体类的类别) * 什么时候使用建造者模式? * 主要用于创建一些复杂的对象,这些对象内部构建的建造顺序通常是稳定的,但对象内部的构建通常是面临着复杂的变化 * 比如构造小人 每次构造只需要画头-画手-画脚  这几个步骤是固定不变的 但是 画头的时候有大有小有胖有瘦 这个事复杂变化的 * 所以需要用构建者模式  用户只需要实现builder类的接口 做具体的实现 然后调用指挥者来进行创建 */}} /* * 抽象的建造人类 */abstract class  PersonsBuilder{public abstract void  drawHead();public abstract void  drawHand();public abstract void  drawFoot();}/* * 具体的实现类 画各种人物 */class PersonSmallBuilder extends PersonsBuilder{public void drawHead() {System.out.println("大头");}@Overridepublic void drawHand() {System.out.println("小手");}@Overridepublic void drawFoot() {System.out.println("小脚");}}class PersonBigBuilder extends PersonsBuilder{public void drawHead() {System.out.println("小头");}@Overridepublic void drawHand() {System.out.println("大手");}@Overridepublic void drawFoot() {System.out.println("大脚");}}/* * 最重要的类 隆重登场!!!  没错 就是他  指挥者 */class Director{private PersonsBuilder builder;public Director(PersonsBuilder builder){this.builder = builder;}/* * 根据用户构造的时候传进来的 PersonsBuilder 类别来构造小人 *  * 注意这里!!! 一共三个步骤  调用CreatPerson 方法来画小人 是肯定不会少胳膊少腿儿的 */public void CreatPerson(){builder.drawHead();builder.drawHand();builder.drawFoot();}}




©著作权归作者所有:来自51CTO博客作者木子的昼夜的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. AnyGantt使用教程:如何创建3D面积图和3D条形图
  2. JavaScript:作用域和闭包,构造函数类与类的继承
  3. 【JS基础入门】JavaScript基础之作用域、闭包、迭代器、构造函数
  4. js之作用域和闭包与原型
  5. CW节约算法构造VRPTW初始解(附MATLAB代码)
  6. 9.6构造方法
  7. 构造函数、dom元素的基础
  8. 《荣枯鉴》译文-5节仪卷
  9. SQL如何求解多元一次方程和构造连续整数

随机推荐

  1. 给女朋友讲了讲 V8 引擎的“回调函数”!
  2. Android解决ViewPager嵌套ViewPager中多
  3. 一个真实问题,搞定三个冷门pandas函数
  4. 分析数万条旅游评论数据后,告诉你国庆“坑
  5. 让Python在后台自动解压各种压缩文件!
  6. 给女朋友写了一份前端学习路线。
  7. “你活该不去创业!”
  8. 小五碎碎谈
  9. 更高效的利用Jupyter+pandas进行数据分析
  10. 周末忙里偷闲去见了大学的俩老朋友。