Android 进阶之路:常见设计模式之建造模式
来源:互联网 发布:广域网优化功能 编辑:程序博客网 时间:2024/05/01 05:56
想成为高级Android工程师其中熟悉常见的设计模式是必不可少的,这个也是我面试一线互联网公司的深刻体会,首先我们现在介绍最基础也是最常用的设计模式:建造(Builder)模式
建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
- 抽象建造者角色:提供一个接口,规范产品对象的建造,一般由子类实现。一般来说,产品的组成部分数与建造方法数相同,即有多少组成部分,就有多少个建造方法。
- 具体建造者角色:该角色实现了抽象建造者抽象建造者接口,主要是实现所有声明的方法以及返回建造好的产品实例。
- 导演者角色:负责调用具体建造者按照顺序建造产品。导演者只负责调度,真正执行的是具体建造者角色。
- 产品角色:该角色是建造的复杂对象,提供基本方法。
使用场景:
1、需要生成的对象具有复杂的内部结构。
2、需要生成的对象内部属性本身相互依赖。
应用实例:
1、去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的”套餐”。
2、JAVA 中的 StringBuilder。
一、实例生成汽车 产品
//产品角色public class Production { private String part1; private String part2; public String getPart1() { return part1; } public void setPart1(String part1) { this.part1 = part1; } public String getPart2() { return part2; } public void setPart2(String part2) { this.part2 = part2; }}
二、建造者
//抽象建造者角色public interface IBuilder { // 产品有多少个组件,就有多少个建造方法 public void buildPart1(); public void buildPart2(); // 返回产品类 public Production build();}
//建造者实现(注意建造者不一样时(即不同组合),产品是不一样的)public class BuilderA implements IBuilder { private Production production = new Production(); @Override public void buildPart1() { System.out.println("构造兰博基尼的第一部分。"); production.setPart1("This is part1 of Lamborghini"); } @Override public void buildPart2() { System.out.println("构造兰博基尼的第二部分。"); production.setPart2("This is part2 of Lamborghini"); } @Override public Production build() { System.out.println("咔擦!兰博基尼已造好!"); return production; }}
三、导演者
public class Director { private IBuilder builder; public Director(IBuilder builder){ this.builder = builder; } /** * 构造顺序 */ public Production construct(){ builder.buildPart1(); builder.buildPart2(); return builder.build(); }}
四、测试模块
public class Client { public static void main(String[] args){ // 兰博基尼 IBuilder builderA = new BuilderA(); Director directorA = new Director(builderA); directorA.construct(); }}
五、总结
优点
1)降低代码耦合度。在建造者模式中,客户端不需要知道产品内部是如何实现的,我们只需得到产品的对象。并且使用导演者和建造者分离组装过程和组件具体构造过程,具有灵活的扩展性。
2)优秀的扩展性。具体建造者相互独立,方便扩展,符合开闭原则。
缺点
1)一定的使用范围限制。建造者模式的产品的组件基本相同,如果产品的差异性较大,建造者模式就不适用了。
资料引用 https://segmentfault.com/a/1190000011513517
- Android 进阶之路:常见设计模式之建造模式
- Android 进阶之路:常见设计模式之工厂模式
- Android 进阶之路:常见设计模式之观察者模式
- Android 进阶之路:常见设计模式之装饰模式
- Android 进阶之路:常见设计模式之适配器模式
- 常见设计模式之【建造模式】
- android设计模式之建造者模式
- Android设计模式之建造者模式
- Java设计模式--------建造者模式之进阶
- Android 进阶之路:常见设计模式之单例模式
- Android 进阶之路:常见设计模式之代理模式一
- Android 进阶之路:常见设计模式之代理模式二
- 设计模式之--建造模式
- 设计模式之建造模式
- 设计模式之建造模式
- 设计模式之建造模式
- Android进阶之设计模式
- Android设计模式之建造者设计模式
- 关于最近遇到的各种坑
- centos安装Apache
- 面试--求数组,左边的数都小于等于它,右边的数都大于等于它
- 20个CSS高级技巧汇总
- 7、Tensorflow:Session.run和Tensor.eval
- Android 进阶之路:常见设计模式之建造模式
- fmpdam-数据库访问中间件
- 关于自定义view中的文字垂直居中的问题。
- QT怎么设置字体轮廓、字体位置、字体样式、字体间距、窗口背景色大小、隐藏鼠标图标
- 指针数组和数组指针
- python3 爬取学校口语坊信息
- 看题看题看题(重要事情说三遍)
- python webdriver 在谷歌中 将淘宝打开成国外淘宝的的问题
- 深度学习环境配置docker+pycharm+GPU