构建模式解决的问题
创建对象的方法,通常的做法是通过构造方法,直接对属性赋值。或者先new一个对象,通过set方法对属性赋值,但是如果属性很多的情况下,构造方法需要注意属性赋值的顺序,如果通过set方法赋值,需要调用很多次set方法。构建模式让构建复杂对象更方便。
构建模式角色
构建模式抽象类方法类型
代码实现
运行结果:
创建三种对象的方法,各有优缺点,构造方法方式创建,在调用时,需要注意对应属性的顺序,在属性很多的情况下,这是一个很麻烦的事情,优势是只有一行代码。通过默认构造方法创建对象,再通过set方法赋值属性的方法,优点是不需要关心构造方法的属性顺序,缺点是需要调用多次set方法,代码行数较多。第三种方式构建模式创建对象,结合前两种方法的各自优点,不需要关心顺序,通过链式方法,只有一行代码,缺点是需要创建对应的builder对象。
jdk中的构建模式
java.lang包中的StringBuilder,运用的就是构建模式。
优缺点
优点:建造者独立,易扩展。 便于控制细节风险。
缺点:产品必须有共同点,范围有限制。 内部变化复杂,会有很多的建造类。
生活中的构建模式
盖房子,我们在生活中盖房子,有地基,墙、顶梁柱这个是大框架,框架搭好了,接下来要对房子进行装修,地板、壁纸、沙发、冰箱、电视等等也是房子的一部分。不同的部分根据自己的喜好有不同的构建方式。
组装电脑,我们买的电脑都是由主板、内存、cpu、显卡等组成,如何把这些东西组装起来给用户这就是建造者模式的作用,不同的人对电脑的配置需求不一样,打游戏的对显卡要求高,但是电脑构成部件是固定的,我们找电脑城的装机人员把电脑装起来这一过程就是建造模式.
我的启发
构建模式,让构建产品的过程和产品本身进行分离,用户可以根据自己的喜好,进行私人订制,马桶镶金、电脑镶砖也都是可以的,只要你够富有和真的喜欢。
设计模式系列文章历史
java设计模式之原型模式,本故事纯属虚构,如有雷同,纯属巧合
java设计模式之桥接模式,策略模式旗舰版,世界没有免费的午餐
Head First 设计模式之装饰器模式,因为参与,所以认同
Head First 设计模式之观察者模式,你我都是发布者和订阅者
Head first 设计模式之策略模式,来源于生活,用之于生活
java经典书单:
网友评论