首页文章设计模式---建造者(Builder)模式组装手机「设计模式---建造者(Builder)模式」

设计模式---建造者(Builder)模式组装手机「设计模式---建造者(Builder)模式」

时间2025-01-16 20:10:59发布yu分类文章浏览138
导读:官方定义:把复杂对象构建与其表示分离,使得同样的构建过程可以创建不同的表示。 个人理解,在创建一个对象的时,需要很多的步骤,而这些步骤基本是保持不变的,例如,画人物,躯干,四肢ÿ...

官方定义:把复杂对象构建与其表示分离,使得同样的构建过程可以创建不同的表示。

个人理解,在创建一个对象的时,需要很多的步骤,而这些步骤基本是保持不变的,例如,画人物,躯干,四肢,头,头上的七窍,人的基本组成是固定不变的,我们把步骤抽象出来成一个建造者接口或抽象类,要生成这个对象,交给建造者去建造,建造者造好,直接获取表示出来。

建造者模式结构图如下:

建造者模式由产品,抽象建造者、具体建造者、指挥者4 个要素构成。指挥者有时也可以不要,后面代码中6.2节有讲解。

建造者模式的主要角色如下:

1.产品(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。

2.抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品(Product)的方法 getProduct()。

3.具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。

4.指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。

1.封装性好,构建和表示分离。

2.扩展性好,各个具体的建造者相互独立,有利于系统的解耦。

3.客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不对其它模块产生任何影响,便于控制细节风险。

1.产品的组成部分必须相同,这限制了其使用范围。

2.如果产品的内部变化复杂,如果产品内部发生变化,则建造者也要同步修改,后期维护成本较大。

1.相同的方法,不同的执行顺序,产生不同的结果。

2.多个部件或零件,都可以装配到一个对象中,但是产生的结果又不相同。

3.产品类非常复杂,或者产品类中不同的调用顺序产生不同的作用。

4.初始化一个对象特别复杂,参数多,而且很多参数都具有默认值。

建造者模式唯一区别于工厂模式的是针对复杂对象的创建。也就是说,如果创建简单对象,通常都是使用工厂模式进行创建,而如果创建复杂对象,就可以考虑使用建造者模式。

具体来说,有以下几方面区别:

1.建造者模式更加注重方法的调用顺序,工厂模式注重创建对象。

2.创建对象的力度不同,建造者模式创建复杂的对象,由各种复杂的部件组成,工厂模式创建出来的对象都一样

3.关注重点不一样,工厂模式只需要把对象创建出来就可以了,而建造者模式不仅要创建出对象,还要知道对象由哪些部件组成。

4.建造者模式根据建造过程中的顺序不一样,最终对象部件组成也不一样。

代码示例包含两个部分,一个部分是Director、Builder和Product形成的建造者模式,另一个部分是通过静态内部类方式实现零件无序装配话构造。

电脑(product)组装,有主板,CPU,内存,硬盘,机箱壳,五个步骤,建造者富士康负责为我们组装,联想是我们的指挥者,我们买电脑不找富士康,找联想就可以了。

6.1.1 电脑产品 Computer

 

6.1.2 组装电脑抽象接口 ComputerBuilder

 

6.1.3 具体建造者富士康 FoxconnBuilder

 

6.1.4 指挥者联想 LenovoDirector

 

6.1.5 主函数

 

6.1.6 运行结果

手机(product)组装,有主板,CPU,存储,手机壳四个步骤,建造者广达负责为我们组装,apple直接找广达提货拿到手机,不要指挥者,广达组装手机的四个步骤可以根据需要进行调换。 

6.2.1 手机产品 Telephone

 

6.2.2 组装手机抽象接口 TelephoneBuilder

 

6.2.3 广达建造者 QuantaBuilder

 

6.2.4 主函数

 

6.2.5 运行结果

两种代码实现,第一种有指挥者适用于建造步骤不变的情况,第二种静态内部类实现方式灵活,对各步骤的先后顺序没有特别要求。 


1.《大话设计模式》

2.

3.

4.

海盐版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com

展开全文READ MORE
设计模式
【独家】微星游戏本七大“影”系列梳理 及 代表机型介绍手机h游戏「【独家】微星游戏本七大“影”系列梳理 及 代表机型介绍」 手机大事件:9月16日资讯盘点手机资讯「手机大事件:9月16日资讯盘点」