GoF 设计模式:浅浅印象
23种设计模式,常常多个模式结合使用,主要是为了解决中大型软件项目“类和对象”膨胀的问题,进而有效组织类的结构而提出的。可划分为3类:创建型(关于类的创建),结构型(多个类的组织),行为型(多个对象的组织)。
创建型模式包括5种:工厂模式(一个一个创建类,优化为用一个模子创建类)、抽象工厂模式(一个一个创建类,然后组装优化为一套模子创建类)、单例模式(简单常用,保证只有一个实例在运行)、构建模式(按同一步骤创建类),原型模式(从已有类copy新类)。
结构型模式包括7种:适配器模式(一个类+转接头=新的风格同一的类,加马甲)、桥接模式(说不清楚)、外观模式(一系列类加个马甲,再留几个接口,封装隐藏降低耦合)、组合模式(类似树,节点是可以包含其他节点的。这样的多个节点,可以组装成任意规模的“树”)、代理模式(类似用书包占座,次要的部分用代理类代替以提高性能降低耗时,当需要实际类时再通过代理类访问)、轻量模式(类极多或数目不定,无法预先获知。类似HTML标签和样式分离,标签只有有限个,采用对象池;而各式各样的样式则根据实际情况加载。轻量模式2个特点,对象池和“底子面子分离”)、装饰模式(在不改变类的情况下,给类新添不同的功能,如给图片类增加黑色边框锯齿形边框等,并且多个装饰可以叠加)。
行为型模式包括11种:责任链模式(按对象的链条逐个传递,典型应用Windows消息循环机制)、状态模式(将复杂的switch case语句分拆成一个个对象,对象根据状态的改变自动实现对应的功能)、策略模式(算法集,封装为多个可互相替换的算法,根据实际情况选择合适的算法)、命令模式(将不同操作归纳封装为抽象的命令,便于统一接口)、会议记录模式(主要是为了实现“撤销”功能,将操作记录下来,并且可以回滚到上一步操作)、模板模式(将共同的部分抽象成为模板)、迭代器模式(将集合对象的访问抽象为迭代器)、解释器模式(如正则表达式的匹配,将某一功能交给专门的类来解释,和代理比较相似)、观察者模式(抽象一“观察者”,将对象的变化通知所有相关的对象)、中介者模式(将多对多的对象联系概括为“中介者”,专门用于对象通讯)、访问者模式(不改变已有类结构基础上,以最小代价实现新增或变更功能,常常破坏封装性)
GoF 设计模式:浅浅印象的更多相关文章
- GOF设计模式特烦恼
这段时间,学习状态比较一般,空闲时基本都在打游戏,和研究如何打好游戏,终于通过戏命师烬制霸LOL,玩笑了.为了和"学习"之间的友谊小船不翻,决定对以往学习过的GOF设计模式做一个简 ...
- 在GoF设计模式
在GoF设计模式中,结构型模式有: 1.适配器模式 Adapter 适配器模式是将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. ...
- OOAD-设计模式(二)之GRASP模式与GOF设计模式概述
一.GRASP模式(通用责任分配软件模式)概述 1.1.理解责任 1)什么是责任 责任是类间的一种合约或义务,也可以理解成一个业务功能,包括行为.数据.对象的创建等 知道责任——表示知道什么 行为责任 ...
- 8.5 GOF设计模式四: 观察者模式Observer
GOF设计模式四: 观察者模式Observer 现实中遇到的问题 当有许多不同的客户都对同一数据源感兴趣,对相同的数据有不同的处理方式,该如 何解决?5.1 定义: 观察者模式 观察者模式 ...
- 8.4 GOF设计模式三: 外观模式 Facade
GOF设计模式三: 外观模式 Facade “现有系统”功能强大.复杂,开发“新系统”需要用到其中一部分,但又要增加一部 分新功能,该怎么办?4.1 Facade Pattern: Key Fea ...
- 8.3 GOF设计模式二: 适配器模式 Adapter
GOF设计模式二: 适配器模式 Adapter 为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式 SingleTon的三个关键点 ...
- 8.2 GOF设计模式一: 单实例模式 SingleTon
GOF设计模式一: 单实例模式 SingleTon 整个美国,只有一个“现任美国总统” 比如,在学校,“老师”,有数百个:“校长”,只有一个 系统运行时,如何保证某个类只允许实例化一个对象 ...
- GOF设计模式快速学习
这段时间,学习状态比较一般,空闲时基本都在打游戏,和研究如何打好游戏,终于通过戏命师烬制霸LOL,玩笑了.为了和"学习"之间的友谊小船不翻,决定对以往学习过的GOF设计模式做一个简 ...
- GoF设计模式三作者15年后再谈模式
Erich Gamma, Richard Helm, 和 Ralph Johnson在GoF设计模式发表15年以后,再谈模式,另外一位作者,也是四色原型的发明者Peter已经过世. 提问者:如今有85 ...
随机推荐
- Chapter 16_0 面向对象编程
Lua中的table就是一种对象. 1.table和对象一样拥有状态 2.和对象一样有一个独立的标识符(a self) 3.和对象一样,具有独立于创建者和创建地的生命周期. 对象有他们自己的操作,ta ...
- bkViewer V4.9k(数码照片浏览工具)中文免费版
软件名称: bkViewer 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 990KB 图片预览: 软件简介: 专为 ...
- 【报错】java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [xxxAction]
java.lang.RuntimeException: Invalid action class configuration that references an unknown class name ...
- 十二、oracle 数据库(表)的逻辑备份与恢复
一.介绍逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程.逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程.物理备份即可在数 ...
- ubuntu14.04 安装 tensorflow
如果内容侵权的话,联系我,我会立马删了的-因为参考的太多了,如果一一联系再等回复,战线太长了--蟹蟹给我贡献技术源泉的作者们- 最近准备从理论和实验两个方面学习深度学习,所以,前面装好了Theano环 ...
- Codeforces 691D Swaps in Permutation
Time Limit:5000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Status Prac ...
- C# 网上收集的一些所谓的开源项目
C#开源 商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7- ...
- python实现邮件发送完整代码(带附件发送方式)
实例一:利用SMTP与EMAIL实现邮件发送,带附件(完整代码) __author__ = 'Administrator'#coding=gb2312 from email.Header import ...
- form表单中的带有name的标签直接转JSON
1. 将如下内容引入页面:比如说新建一个 a.js,然后在页面中引入a.js//将form表单序列化成json格式 $.fn.serializeObject = function () { var o ...
- opencv 一堆算法,图像处理等
http://blog.csdn.net/wangzhebupt/article/category/1675453 数据挖掘十大经典实用算法及OpenCV算法 http://www.xuebuyuan ...