您的位置:首页 > 其它

【博览网】设计模式——第二周课程笔记

2017-10-03 20:54 267 查看
本周接着介绍详细的具体的设计模式,包括工厂方法、抽象工厂模式、原型模式、构建器、门面模式、代理模式、适配器和中介者。

一、工厂方法

1.应用情景

在软件系统中,经常面临着对象创建的工作;由于需求的变化,需要创建的对象的具体类型经常发生变化。

2.解决方案

在软件中,可以通过将new封装到工厂类的create函数中,并且将工厂类抽象出一个基类,实现new的多态性。这样可以保证对象构建函数的复用,实现将变化集中的目的。

其结构如下图所示:

二、抽象工厂模式

1.应用情景

需要进行一系列的相互关联的创建活动时。

2.解决方案

将这一系列的创建活动放置到一个工厂类中,简化系统中类的个数。

三、原型模式

1.应用情景

在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。

2.解决方案

在需要使用对象的地方,传入一个配置好的原型对象,在需要使用时深拷贝该对象,获取所需的对象。

其结构图如下图所示:

四、构建器

1.应用情景

在软件系统中,存在一个复杂对象的创建工作,其创建的流程是固定的,但是其创建的子步骤经常发生改变。

2.解决方案

与模板方法类似,将创建流程在基类中实现,子过程作为protected的虚函数,在子类中再实现。实现时需要注意不同语言在构建对象时调用虚函数的区别。

五、门面模式

1.应用情景

组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各个系统的演化,这种过多的耦合面临很多变化的挑战。

2.解决方案

将所有的耦合关系使用一个统一的类来管理,即给一个子系统设计一个类做外部的门面,实现高内聚低耦合。

六、代理模式

1.应用情景

在面向对象系统中,有些对象由于某种原因,直接访问会给使用者、或者系统结构带来很多麻烦。

2.解决方案

增加一个间接层来解决这些麻烦,保证客户程序调用的透明性。

七、适配器

1.应用情景

将现存对象放到新的环境中使用,但是接口不匹配时。

2.解决方案

增加一个间接类将旧的接口转换为新的接口。

八、中介者

1.应用情景

在系统内部,对象之间相互维护了非常复杂的引用关系时。

2.解决方案

使用一个中介者类,将所有相关的对象引用集中管理,实现系统内对象之间的相互联系的解耦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: