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 ...
随机推荐
- 练习3:修改withdraw 方法
练习目标-使用有返回值的方法:在本练习里,将修改withdraw方法以返回一个布尔值来指示交易是否成功. 任务 1.修改Account类 a.修改deposit 方法返回true(意味所有存款是成功的 ...
- JS 经典代码段总结 start from 2016-08-22
1.for(var i = 0, max = myArray.length; i < max ; i++){ //用myArrayy[i]来做点什么 } 用max存储myArray的长度,防止每 ...
- JPA 系列教程12-复合主键-2个@Id+@IdClass
复合主键 指多个主键联合形成一个主键组合 需求产生 比如航线一般是由出发地及目的地确定,如果要确定唯一的航线就可以用出发地和目的地一起来表示 ddl语句 同复合主键-2个@Id一样 Airline p ...
- Hibernate中自带ID的generator的含义
increment:代理主键,适合于所有数据库,由hibernate维护主键自增,和底层数据库无关,但是不适合于2个或以上hibernate进程. identity:代理主键,适合于Mysql或ms ...
- nodejs【伪】入门教程
声明: 本文适合白的不能再白的小白 不要被标题误导,本文不会讲nodejs基础,只是本人学习流程和资料的一个整合 如果想找一大堆教程自己看,没有电梯,自己拉到文章最下方吧 一.nodejs是什么 ...
- unity Mesh(网格)的使用
创建两个三角形合成的矩形网格: GameObject obj= new GameObject(); MeshRenderer meshRenderer=obj.AddComponent<Mesh ...
- asp脱离源代码管理
当项目中出现“未能找到与此解决方案关联的源代码管理提供程序.项目将视为不受源代码管理” 解决方法:1.vs2013打开项目, 2.提示“您正在打开的解决方案已绑定到以下Team Foundation ...
- 自定义控件之--继承控件(圆形TextView)
师从郭大,自学于心,继承控件无疑就是继承自现有控件,保持继承的控件的属性并进行必要的扩展. 比如下面这个自定义控件,它就保持了TextView的属性,并对TextView的外观进行必要的修改该来适 ...
- hdu_4828_Grids(卡特兰数+逆元)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4828 题意:中文,不解释 题解:实际就是一个卡特兰递推: Catalan(n+1)= Catalan( ...
- hdu_4826_Labyrinth_2014百度之星(dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4826 题意:中文题,不解释 题解:dp搞,第一列只能从上往下走,所以先算出第一列的dp数组,然后开两个 ...