美文网首页
设计模式中的建造者模式

设计模式中的建造者模式

作者: Synchronize | 来源:发表于2016-10-08 17:06 被阅读0次

   假如我们需要一个对象,这个对象的构成需要其它一些子对象组成。今后的情况是,这些子对象可能会发生变换,它们之间的不同组合又会构建成新的对象。举个例子,比如套餐这个抽象的对象,它需要其他一些吃的或者喝的对象组成。比如肯德基豪华大餐,它可能是薯条,墨汁鱿鱼汉堡,可乐,鸡翅构成的。另一个套餐的组成可能是芬达,鸡腿,薯条,香辣牛肉堡。。。

此时我们会考虑用到设计模式中的建造者模式,它能够创建一个对象自由组合那些子对象。

我看了runoob.com中的例子,根据自己的理解写了一些。

我们需要做一个制造套餐对象的类,这个类就是建造者(BuilderMeal),用来制造我们想要的子对象的组合,封装在套餐(Meal)这个对象中。

所有的子对象也就是具体的吃喝之类,都有一些共性,比如名称,价格,还有包装方式等,我们把它们封装在一个接口中:

其中的Pack是一个接口,用来表示包装方式,吃的我们就是打包(Wrapper),喝的就是装在瓶子(Bottle)里。

吃的东西我叫做Burger,喝的叫做Drink

之所以做成抽象类是因为所有吃的都是打包,喝的都装在瓶子中。子类继承之后自动实现了打包方式,提高了代码的复用性。而抽象类中的抽象方法和未实现的接口方法都让继承的子类必须各自实现。于是随便写了几个,这里只贴一个吃的和一个喝的子类。

接下来就是Meal这个类了,本质上它只是子对象的集合,所以提供了一个存放Item对象的集合,和添加该对象的方法,除此之外,还提供了Meal的总价格,等于各个子对象的价格之和。

最后就是建造者,用来制造具体的Meal:

这里制造了两种类型的meal。最后我们使用Demo类来看看效果:

控制台的输出如下:

建造者模式让建造者类完全独立了出来。以后添加任何子对象或者创建新的Meal都非常容易轻松,不需要任何额外的改动。扩展性很好。这里需要说明的是,当用建造者模式创建出来的Meal,我们仍然可以使用addItem方法对其进行修改,但是我们不愿意做这样的事,我们希望建造者建立出来的Meal对象是确定的那样的,不被再修改,那么需要修改哪部分的代码完成这样的效果呢?

相关文章

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 【Java设计模式】--建造者模式

    建造者模式(Bulider模式) 一、什么是建造者模式 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

  • 23种设计模式之建造者模式

    建造者模式又叫做生成器模式,是23种设计模式中的一种创建型模式。建造者模式,顾名思义,就是为创建对象而生的模式。 ...

  • 一些常见的设计模式总结

    1.工厂模式 Spring中的应用:BeanFactory 构造对象 2. 建造者设计模式 建设者设计模式是属于创...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

网友评论

      本文标题:设计模式中的建造者模式

      本文链接:https://www.haomeiwen.com/subject/lrwuyttx.html