1 / 66
文档名称:

软件设计模式sdp-第3章.pptx

格式:pptx   大小:460KB   页数:66页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件设计模式sdp-第3章.pptx

上传人:qiang19840906 2022/7/31 文件大小:460 KB

下载得到文件列表

软件设计模式sdp-第3章.pptx

相关文档

文档介绍

文档介绍:软件设计模式
第3章 设计模式入门
模式概念
通用责任分配模式(GRASP)
简单工厂模式(Simple Factory Pattern)
提纲
模式的定义
模式存在于生活的各个角落,不tion-specific names for operations in the pattern)。如,创建型模式类操作(或方法)一般加“create”前缀,访问者模式类操作(或方法)用“visit”前缀等。
7)实现6)中定义的操作(原文:Implement the operations to carry out the responsibilities and collaborations in the pattern)。即,参考设计模式样例,实现自己的模式代码。
对于恰当使用设计模式解决问题,补充如下:
8)以模式作为语言帮助团队进行技术沟通。
首先,技术团队需要建立沟通语言,即每个技术人员都能理解指代词语内涵。
9)正视模式的缺陷。
没有任何一个技术或方法是万能的,模式也一样。
针对目标问题,软件设计模式提供了一种可行、且可复用的设计方案;但,不一定是最优设计方案。
模式的引入一定会携带自身缺陷;比如,增加设计类数量,或使设计方案变得更复杂等。
工程师需要明白的是:设计是以较小代价换取目标问题的解决,而不是没代价;所有模式都有缺陷,大家要恰当地使用它们,而不是滥用!
10)多个模式可以复合使用。
在初学者中,很多人认为一个类或对象承担了某个模式职责后,就不能再引入其他模式职责了;这是错误的思维!
使用模式是以问题解决为目标的,而不限于形式。在行业案例章节的内容中,读者可以看到,很多经典案例都将多个设计模式复合在一起,以解决目标代码问题。
模式之间的联系或相关性是因业务建立的,而不是模式理论自身。
11)不必完全按照形式化模式理论定义代码结构。
代码设计是以解决问题为目标的。GoF或其他作者提出的设计模式理论是泛化且抽象的,同时也带有一定的技术局限。
计算机或软件工程技术的发展使得30年前的领域经验和软件认知发生了巨大的变化,现在所面临的影响代码设计的因素变得更加多样和复杂,比如移动互联网、云计算、大数据等是30年前的技术专家在当时不曾面对的领域环境。
经典的理论具有指导实践的作用,但在实际运用时,工程师却不能僵硬地受限于经典理论的约束。
创建者、信息专家、控制器和简单工厂模式使用总结
模式名称
模式定义
使用场景
解决方案
创建者(Creator)
创建目标类实例的对象
谁负责创建指定类的实例?
类实例的创建职责可以按如下规则分配:1)类B对象是类A对象的聚合体,则B创建A的实例;2)类B对象包含类A对象,则B创建A的实例;3)类B对象保存A对象实例,则B创建A的实例;4)类B对象使用A对象,则B创建A的实例;5)类B对象持有A对象初始化所需数据,则B创建A的实例。
信息专家(Information Expert)
拥有处理实现目标职责所需信息的对象
将行为职责分配给哪个类或对象?
将行为分配给拥有实现该职责所需信息的专家类。
控制器(Controller)
负责接收或处理系统事件的非用户接口(User Interface,UI)对象
谁应该处理目标系统输入事件?
判断目标系统输入事件接收或处理的对象,满足以下条件之一即可:1)该对象代表整个系统的服务入口;2)该对象代表了一个系统事件生成的用例场景。
简单工厂(Simple Factory)
负责创建目标产品实例的对象
如何实现产品对象创建行为的一致或复用?
将目标产品创建行为分配给工厂类,由工厂类向客户端提供产品对象创建服务。
GoF模式使用总结
模式类型
模式名称
模式定义
使用场景
创建型模式
单例(Singleton)
目标类(Class)只有一个实例对象(Object),并且向使用该对象的客户端提供全局访问方法。
1)当一个类只能有一个实例,并且客户端需要访问该实例;2)当一个类的实例化代价很大,且向所有客户端提供的服务都无状态或不因客户端的变化而改变状态。
原型(Prototype)
通过复制自己达到构造目标对象新实例的目的。
1)当一个类的实例状态只能是不同组合中的一种时,而不想通过平行类或子类的方式区分不同的状态组合;2)当业务代码中不能静态引用目标类的构造器来创建新的目标类的实例时;3)当目标类实例化代价昂贵,不同的客户端需要单独使用一个目标类的对象时。
模式类型
模式名称
模式定义
使用场景
创建型模式
构造器(Builder)
为构造一个复杂产品对象,进行产品组成元素构