java设计模式—浅谈建造者模式

建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。

建造者的应用场景:

需要生成的产品对象有复杂的内部结构,这些产品对象具备共性;

隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。

适合于一个具有较多属性的产品的创建过程。

正常的建造者模式应该有以下几个角色:

1.指挥者。 2.产品。3.工人。4.抽象

建造者模式的优点:

1.产品的建造和表示分离,实现了解耦,使用建造者模式可以使客户端不必知道产品组成细节。

2.将复杂产品的创建步骤分解再不同的方法中,使得创建过程更加清晰。

3.具体的建造者类之间是相互独立的,这有利于系统的扩展,增加新的具体。建造者无需修改原有类库的代码,符合开闭原则。

缺点:

1.建造者模式所创建的产品,一般具有较多的共同点,其组成部分相似,如果产品差异过大,则不适合使用建造者模式。所以使用范围收到限制。

2.如果产品内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得庞大。

常规建造者模式:

抽象类:

指挥:

 

工人:

测试类:

打印结果:

以上即是常规的建造者模式。

但是建造者模式,怎么建造应该让用户决定。总不能我去饭店让服务员帮我点菜,对吧,所以我们可以使用内部类的方式。
 

产品:

工人:

 

建造者,也就是抽象类

 这次没有指挥了,因为用户即是指挥。

测试类:

打印结果:

如果想吃点别的:

可以在原来的基础上任意组合,如果不组合,即是默认套餐。 

 打印结果:

 

通过内部类的方式实现零件的无序装配构造,这种方式更加灵活,更符合定义,内部有复杂对象的默认实现,使用时可以根据用户需求自由定义更改内容,并且无需改变具体的构造方式,就生长处不同的复杂产品。

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值