软件工程(二十六)

原创 2016年06月01日 23:49:15

GoF设计模式简介
这里写图片描述

创建型模式
创建型模式概述
- 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。
- 创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。

创建型模式简介
* 简单工厂模式
* 工厂方法模式
* 抽象工厂模式
* 建造者模式
* 原型模式
* 单例模式

简单工厂模式
模式动机
例:只需要知道水果的名字则可得到相应的水果

模式动机
* 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等),这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观
* 我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便 的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。

模式定义
* 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。
* 在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

模式优缺点
简单工厂模式的优点
* 工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品;
* 简单工厂模式通过这种做法实现了对责任的分割。
* 客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。
* 通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。

模式优缺点
简单工厂模式的缺点
* 由于工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。
* 使用简单工厂模式将会增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度。
* 系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。
* 简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。

模式适用环境
在以下情况下可以使用简单工厂模式:
* 工厂类负责创建的对象比较少:由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。
* 客户端只知道传入工厂类的参数,对于如何创建对象不关心:客户端既不需要关心创建细节,甚至连类名都不需要记住,只需要知道类型所对应的参数。


欢迎关注我的微信个人订阅号
这里写图片描述
每天多学一点0.0

版权声明:本文为博主原创文章,注明出处,随便转

相关文章推荐

软件工程——从艺术走向科学

本文转载至:http://www.cnblogs.com/hack/archive/2010/01/22/1654307.html 今日从CTO俱乐部讨论话题,无意遇到本文作者,打开他的博客发现...

软件工程---文档中用到的5种图表

把软件工程学习完之后,便开始了《机房收费系统》的文档,第一次写文档遇到了一些困难,就像画图,在软工的视频中,虽然老师当时也提到了图,但真正到了自己要去画的时候,还是感觉很难下手,SO,总结一下,以后再...

标准的软件工程过程之文档标准

标准的软件开发过程 软件开发的标准过程包括六个阶段,而六个阶段需要编写的各类文件达14种之多,在每个阶段需要编写哪些文件,以及这些文件的主要内容见下: 1.可行性与计划研究阶段 可行...

【软件工程】看我火眼金睛——系统流程图、程序流程图、数据流图、活动图、状态图、顺序图辨析

【前言】 在软件工程中我们学习了数据流图,程序流程图,UML中的活动图,状态图,顺序图,这些图貌似都是在描述软件的执行过程,那么它们到底有哪些相同点,又有哪些不同点呢?下面,我...

谈软件工程各环节中的辅助工具

谈软件工程各环节中的辅助工具

【软件工程】——可行性研究报告

机房收费系统的文档已经编写完成,完成之后自己问了问自己学的怎么样?我说出来的收获就只是软件工程每个阶段对应应该生成什么文档,文档的读者是谁,每个文档的主要内容,仅此而已。囫囵吞枣真的是诠释的淋漓尽致O...
  • LyySwx
  • LyySwx
  • 2016年09月28日 16:02
  • 780

软件工程常见的五种操作模型

1.瀑布模型 思想:①制作时间 工序化简           ② 功能实现制作分开     优点:  1)为项目提供了按阶段划分的检 查点。  2)当前一阶段完成后,只需要去关注后续阶段 ...

软件工程 - 个人博客系统 - 概要设计与详细设计文档

文档主要在于定义个人博客系统的主要结构元素及其之间的关系。 详细的数据流图已在需求分析文档中给出。通过功能划分过程来完成软件结构设计,设计基本模块如下:浏览登录、发表文章、发表评论、附件上传下载、文章...
  • Ya_da
  • Ya_da
  • 2016年11月08日 11:51
  • 1684

中科大软院《软件工程(C编码实践篇)》实践总结

胡 鹏 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006        软件工程,就是以工程化的思...

软件工程之五个层次四个部分

在面向对象技术这一章中,提到了“五个层次”和“四个部分”,对于这两方面以及关系做了一下总结。        首先,说一下“五个层次”。OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件工程(二十六)
举报原因:
原因补充:

(最多只允许输入30个字)