设计模式的应用场景(3)--创建者模式
来源:互联网 发布:java中cgi 编辑:程序博客网 时间:2024/06/06 05:46
创建者模式
定义:创建者模式就是将一个复杂对象的创建与它的表示分离,是的同样的构建过程可以创建不同的表示,客户端不需要知道对象的创建细节。
原理:创建者模式主要由5部分组成:组装类、抽象创建者类 以及具体创建者类、抽象产品类以及具体产品类。
优点:在创建者类中,客户端不再负责对象的创建和组装,而是把这个创建的责任交给具体的创建者类,组装的工作交给具体的组装类,客户端只负责对象的调用,明确了各个类的职责。
缺点:虽然利用创建者模式可以创建出不同类型的产品,但如果产品之间的差异过大,则需要编写多个创建者类才能实现,这是如果结合工厂模式更好。
使用时机:当系统需要创建一个复杂的对象,而且这个复杂的对象组装起来比较麻烦时,可以使用创建者模式。
摩托车组装系统 :
摩托车 = 车架 + 车轮 + 轮胎 + 发动机。
//摩托车类: public interface Motorcycle { void build(); } public class Motorcycle1 implements Motorcycle { void build(){ Sysout.out.println("组装摩托车开始..."); } } //以下是摩托车零件类: //摩托车架类: public interface Carcase { void build(); } public class Carcase1 implements Carcase { void build(){ Sysout.out.println("组装摩托车架开始..."); } } //车轮类: public interface Wheel { void build(); } public class Wheel1 implements Wheel { void build(){ Sysout.out.println("组装摩托车轮开始..."); } } //轮胎类: public interface Tyre { void build(); } public class Tyre1 implements Tyre { void build(){ Sysout.out.println("组装摩托轮胎开始..."); } } //发动机类: public interface Engine { void build(); } public class Engine1 implements Engine { void build(){ Sysout.out.println("组装发动机开始..."); } }
客户端代码
public class Client { public static void main(String[] args) { Factory factory = new MotorcycleFactory(); Carcase carcase = factory.createCarcase(); carcase.build(); Wheel wheel = factory.createWhee(); wheel.build(); Tyre tyre = factory.createTyre(); tyre.build(); Engine engine = factory.CreateEngine(); engine.build(); //对摩托车零件进行组装,这里省略了组装代码 return new Motorcycle1(); } }
这样子功能是实现了,但是感觉比较怪,存在一些问题:摩托车零件比较多,客户端组装比较麻烦,如果把摩托车的组装放在工厂里,那么工厂类也很麻烦。
解决办法:
继续划分职责,增加一个单独的类来负责摩托车的组装。增加一个组装类来负责产品的组装,工厂类只负责创建,客户端直接调用组装类。
增加的组装类:
public class Director { private Factory factory; public void Director(Factory factory){ this.factory = factory; } public Motorcycle assembleMotorcycle(){ Carcase carcase = factory.createCarcase(); carcase.build(); Wheel wheel = factory.createWhee(); wheel.build(); Tyre tyre = factory.createTyre(); tyre.build(); Engine engine = factory.CreateEngine(); engine.build(); //对摩托车零件进行组装,这里省略了组装代码 return new Motorcycle1(); } }
客户端代码
public class Client{ public static void main(String[] args){ Directorr director = new Director( new MotorcycleFactory() ); Motorcycle motorcycle = director.assembleMotorcycle(); }}
阅读全文
0 0
- 设计模式的应用场景(3)--创建者模式
- 设计模式--创建者模式
- 设计模式-创建者模式
- 创建者设计模式
- 设计模式应用场景
- 设计模式应用场景
- 设计模式应用场景
- 设计模式 应用场景
- 设计模式 应用场景
- 设计模式应用场景
- 设计模式应用场景
- 设计模式 应用场景
- 设计模式应用场景
- 设计模式系列-创建者模式
- 设计模式之创建者模式
- 设计模式-创建者模式(Builder)
- 设计模式之创建者模式
- 设计模式之创建者模式
- Android高德地图导航or语音播报
- Python 惰性计算
- AssetBundle5.0 打包,下载到本地,加载
- Android 一个灵活的图片 Gridview 布局
- SAP ERP接口解决方案实践
- 设计模式的应用场景(3)--创建者模式
- [Alibaba-ARouter] 简单好用的Android页面路由框架
- Python3学习(20)--第三方模块pymysql的安装及使用
- Java NIO系列教程(8):SocketChannel
- 大小端和网络子节序
- 堆和栈的区别
- ubuntu下绑定串口
- 如何上传发布自己的npm组件包
- java服务端接入有赞,实现后台登陆有赞商城的需求