软件构造课程 Blog-6 关于Creational Patterns的一些理解

软件构造 Blog-6


写在最前面

在6.2 Design Patterns for Maintainability中提到了三个不同的构建模式,在第一次看的时候感觉不好理解。在今天上课的时候,听老师讲的时候举得“餐厅”的例子感觉很形象,所以想利用这个例子,简单的说一下并记录自己的这个想法,以便交流和以后复习使用。

Factory Method Pattern (工厂方法模式)

说到工厂方法,其实本质就是尽量避免Client使用SomeObject object = new SomeObject()这种可以直接使用new构建对象的方法。转而提供一些工厂类来避免暴露我的具体的类名。举个例子来说明,有一家餐馆,卖各种调料酱,这家店的老板告诉他的顾客,这些调料酱有沙拉酱,烧烤酱和番茄酱等等,但怎么要看顾客的使用就行;还有一家餐馆,老板不想让顾客知道我用的什么酱,我只告诉你你可以用调料酱。
上面两个例子,前面那个餐馆就可以视为没有工厂,直接用new来“使用酱”;后边的餐馆,就有一个工厂屏蔽了顾客和餐馆,只有餐馆的人知道我给你的啥酱。

Abstract Factory(抽象工厂模式)

抽象工厂模式:提供接口以创建一组相关/相互依赖的对象,但不需要指明其具体类。

还是餐馆的例子,还有一家老板,比较死板,我不想让你顾客因为你要的酱不对影响我菜的味道,我规定你要了其中某种菜,只能再要与其搭配的那种酱,而不能要其他的酱。比如,我要了沙拉,想要酱那么我只提供沙拉酱;但是你有自由选择不要酱(即我利用Abstract Factory创建的不是一个完整的产品,而是一个产品族)。

Builder (构造器模式)

创建复杂队形,包含多个组成部分

仍然是餐馆的例子,还有一家老板,死板但是良心,我觉得你要了我的菜只有搭配我的酱才会更好吃,所以我干脆你只要点了我的菜就认为你需要我的酱。比如,我要了薯条套餐,直接给我的就是薯条和番茄酱(Builder模式创建的是一个完整的产品,有多个部分组成,Client不需要知道我各个部分是怎样创建怎样组合的)。

最后

这仅仅是我个人的一些理解,可能有有所偏差,如果有误希望大家能够私信或者评论我。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值