Java设计模式之建造者模式(二)
来源:互联网 发布:艾默生网络能源出售 编辑:程序博客网 时间:2024/05/21 14:06
一、使用场景
1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2、当构造过程必须允许被构造的对象有不同的表示时。
二、通用类图
三、举例
假设有一个手机厂商,为客户生产手机,整个手机由硬件、操作系统和应用程序组成,用户可能需要iPhone手机,或者Android手机。
产品角色Product——Phone:
package com.wz.builder;public class Phone { private String hardware; private String OS; private String app; public String getHardware() { return hardware; } public void setHardware(String hardware) { this.hardware = hardware; } public String getOS() { return OS; } public void setOS(String oS) { OS = oS; } public String getApp() { return app; } public void setApp(String app) { this.app = app; }}
具体产品1——Android手机:
package com.wz.builder;public class AndroidPhone extends Phone{ public AndroidPhone(){ System.out.println("生产 Android手机"); }}
具体产品2——iPhone手机:
package com.wz.builder;public class IPhone extends Phone{ public IPhone(){ System.out.println("生产iPhone手机"); }}
抽象建造者类Builder——PhoneBuilder:
package com.wz.builder;public interface PhoneBuilder { public void buildHardware(); public void buildOS(); public void buildApp(); public Phone retrievePhone();}
具体建造者类ConcreteBuilder1——AndroidPhoneBuilder:
package com.wz.builder;public class AndroidPhoneBuilder implements PhoneBuilder{ Phone phone; public AndroidPhoneBuilder() { phone = new AndroidPhone(); } @Override public void buildHardware() { // TODO Auto-generated method stub System.out.println("build Android手机的硬件"); } @Override public void buildOS() { // TODO Auto-generated method stub System.out.println("build Android手机的系统"); } @Override public void buildApp() { // TODO Auto-generated method stub System.out.println("build Android手机的应用程序"); } @Override public Phone retrievePhone() { // TODO Auto-generated method stub return phone; }}
具体建造者类ConcreteBuilder2——IPhoneBuilder:
package com.wz.builder;public class IPhoneBuilder implements PhoneBuilder{ Phone phone; public IPhoneBuilder(){ phone = new IPhone(); } @Override public void buildHardware() { // TODO Auto-generated method stub System.out.println("build iPhone手机的硬件"); } @Override public void buildOS() { // TODO Auto-generated method stub System.out.println("build iPhone手机的硬件"); } @Override public void buildApp() { // TODO Auto-generated method stub System.out.println("build iPhone手机的硬件"); } @Override public Phone retrievePhone() { // TODO Auto-generated method stub return phone; }}
导演者类Director——PhoneDirector:
package com.wz.builder;public class PhoneDirector { public Phone constructPhone(PhoneBuilder phoneBuilder){ phoneBuilder.buildHardware(); phoneBuilder.buildOS(); phoneBuilder.buildApp(); return phoneBuilder.retrievePhone(); }}
客户端类Client——Client:
package com.wz.builder;public class Client { public static void main(String[] args) { PhoneDirector phoneDirector = new PhoneDirector(); phoneDirector.constructPhone(new AndroidPhoneBuilder()); phoneDirector.constructPhone(new IPhoneBuilder()); }}
执行结果:
生产 Android手机build Android手机的硬件build Android手机的系统build Android手机的应用程序生产iPhone手机build iPhone手机的硬件build iPhone手机的硬件build iPhone手机的硬件
参考:
http://haolloyin.blog.51cto.com/1177454/333155/
http://blog.csdn.net/jason0539/article/details/44992733
http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html
http://www.cnblogs.com/java-my-life/archive/2012/04/07/2433939.html
1 0
- Java设计模式之建造者模式(二)
- java 设计模式之建造者模式(Builder)模式
- Java设计模式(二)----建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- 【Java设计模式】之建造者模式
- java设计模式之建造者模式
- Java--设计模式之建造者模式
- java设计模式之-建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- java设计模式之建造者模式
- JAVA设计模式之:建造者模式
- Java设计模式之建造者模式
- Java设计模式之建造者模式
- iOS 密码等级验证
- spring jar 源码 实例 下载 简单直接的方法
- FreeMarker内建函数介绍
- 树莓派3B应用篇之视频监控(上)
- Dagger2 再菜鸟入门
- Java设计模式之建造者模式(二)
- React-Native学习--轮播图第三方组件-react-native-swiper
- android ResultReceiver用法
- 【vs2015】Windows NT实现系统版本识别
- library工程switch case 报错 需要常量表达式
- Android 微信支付详解及总结
- 【技术支持】开发人员从客户数据库环境中导出数据用户测试的几种方法途径
- 判断android手机中有无某个程序
- iOS APP 如何做才安全