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 ...
随机推荐
- tableviewcell 中使用autolayout自适应高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { [ce ...
- 获取Camera 支持视频的尺寸
<uses-permission android:name="android.permission.CAMERA" > </uses-permission> ...
- CVE-2014-1767 漏洞分析(2015.1)
CVE-2014-1767 漏洞分析 1. 简介 该漏洞是由于Windows的afd.sys驱动在对系统内存的管理操作中,存在着悬垂指针的问题.在特定情况下攻击者可以通过该悬垂指针造成内存的doubl ...
- Canvas基础讲义
今天先花点简单的篇幅和大家介绍下canvas. 1. 基本篇 1.1. 什么是 Canvas canvas 是 HTML5 提供的一个用于展示绘图效果的标签. canvas 原意画布, 帆布. 在 H ...
- [ 订单查询 ] 性能 高并发 : 分表 与 用户id%1024 存放表
逻辑剥离, 保留核心部分 下单 { 核心功能 -- 买家查看订单, 卖家查看收到订单, 修改价格 5个表 附属功能 -- 库存量, 发短信, 给卖家发通知, 订单统计, 销售额统计 } 下单时 一个数 ...
- 复习之webview(观看张荣超视频)
webview定义的两张方式: 1,是在xml文件里面进行定义: 2,实在代码里面定义: 3,在webview上显示内容必要的配置: 4常见的设置: 是否支持javascript 是否支持缩放 ...
- WebService测试方案
1.WebService简介 WebService是一种革命性的分布式计算技术,本质上就是网络上可用的API,可以直接在网络环境调用的方法. WebService常用的框架有axis.xfire.cx ...
- RESTful架构3--开发实战
转自:REST服务开发实战 如果要说什么是REST的话,那最好先从Web(万维网)说起. 什么是Web呢?读者可以查看维基百科的词条(http://zh.wikipedia.org/zh-cn/Web ...
- Office Web Apps 错误
owa安装完后,在sharepoint网站上打开word,excel,报错,Sorry, something went wrong, 通过correlation id找到错误信息(如何在sharepo ...
- angular、bootstrap初稿搭建
1.bootstrap3.0中,ie8不兼容响应式设计 @media,需要添加如下2个查件 <!-- html5.js for IE less than 9 --> <!-- ...