第四节课 23设计模式分类说明
来源:互联网 发布:qq三国js高配灵魂搭配 编辑:程序博客网 时间:2024/05/27 00:48
设计模式
写在前面的话: 如果不深刻理解面向对象程序设计思想,理解和使用各种设计模式就是无源之水,无本之木。
模式名称
定义
说明
角色对象
优点缺点
符合原则
创建型模式 如何实例化对象
简单工厂模式
通过选择不通的参数,创建不通的对象
在代码里分别选择
一个简单工厂对象
多个实现对象
优点:简单明了;使用的对象少
部分符合:里氏代换原则
缺点:
1、增加新的创建对象需要修改源代码,违反开闭原则
2、容易成为万能工厂,违反单一职责
工厂方法模式
Factory Method
通过选择不通的工厂对象创建不通的对象。工厂对象和实现对象一一对应
在包里集中体现
一个抽象工厂对象
多个方法工厂对象
一个抽象对象
多个实现对象
优点:符合开闭原则
里氏代换原则
依赖倒转原则
开闭原则
对象多繁琐
抽象工厂模式
Abstract Factory
通过选择不通的工厂对象创建一系列对象
一个抽象工厂对象
多个实现工厂对象
多个系列抽象对象
多个系列实现对象
对象抽象度高,减少了工厂对象
里氏代换原则
依赖倒转原则
开闭原则
缺点:归类成一系列不容易
建造者模式
Builder
通过类模板创建多个对象
有一个类模板。通过不同的建造对象,可以生成不同的新对象。通过指挥者选择不通的建造对象实现不同对象的创建
一个指挥对象
一个抽象建造者
多个创建者对象
一个产品模板对象
对象的创建
聚合关系、组合关系的对象适用
缺点:不直观
原型模式
Prototype
通过对象模板创建多个对象
有一个对象模板。通过深克隆或浅克隆,创建一个新对象,然后对新对象进行处理
一个抽象对象类
多个实现对象类
聚合关系、组合关系的对象适用
单例模式
Singleton
通过自己创建自己
自己创建自己,保证唯一实例
单个对象
结构模式 如何使用已有的类或对象组合成一个新的类或对象或改变对象的结构
适配器模式
Adapter
类适配器
对象适配器
类适配器:C类调用的B接口,但是想用A类的函数。D适配器继承A类和B接口。
对象适配器:C类调用的B接口,但是想用A对象的函数。D适配器继承B接口,引入A对象。
增加一个适配器类继承A和B接口
或继承B,引入A
不增加新成员,属性或方法
通知增加新的适配器类来替换代码的修改。
满足开闭原则
缺点:多了一个适配器类
桥接模式
Bridge
一个对象的结构成员根据抽象可以实现不同的对象。当前类有不同的变化,当前类的成员类也有不同的变化。
可变化的成员必须是接口或虚类。不增加新成员。
组合模式
Composite
组合成树叶节点结果的对象
装饰模式
Decorator
不改变原来对象的情况下增加新的成员(函数或属性)
增加新的成员
增加一个装饰类
在装饰类中增加成员,属性或方法。
意思是改变类的职责
外观模式
Façade
抽取出多个对象的公共成员,组成一个接口对象。
不增加新成员,增加新的接口
增加一个新的接口类
享元模式
Flyweight
多个相同的对象,变成一个对象。类型单例模式
将多个重复的对象,变成一个对象
代理模式
Proxy
将一个对象封装起来,通过代理对象访问封装对象
给对象套一个壳子
行为模式 特定环境下对象和对象关系的变化
职责链模式
Chain of
Responsibility
多个节点按照顺序执行一个对象
用户只关心提交的被执行的对象。不关心执行过程
命令模式
Command
用户只关心
一个执行目录对象
多个命令对象
一个或多个被执行对象
解释器模式
Interpreter
迭代模式
Iterator
多个集合对象,按照顺序遍历访问
用户只关心
中介模式
Mediator
备忘录模式
Mediator
记录对象的状态变化,以编译重新返回。
观察者模式
Observer
一个对象的变化会引发多个相关对象的变化。用户只要改变目标对象,不关心相关观察者对象
状态模式
State
策略模式
Stratergy
同一个问题,不通角度的实现
模板方法模式
Template Method
一系列解决问题的模板
访问者模式
Visitor
- 第四节课 23设计模式分类说明
- 设计模式的说明以及分类
- 设计模式第四堂课
- 设计模式分类,23种设计模式
- 设计模式学习---第四节:策略模式
- 23种设计模式分类
- 23中设计模式分类
- [设计模式]23种设计模式分类和设计原则
- 23种设计模式分类与简介
- GOF 23种设计模式 怎么分类
- 设计模式分类
- 设计模式分类
- 设计模式随笔分类
- 设计模式分类
- 常见设计模式分类
- 设计模式的分类
- Java 设计模式分类
- 设计模式分类 中英对照
- svn 部分命令
- 一种排序
- socket链接的关闭close和shutdown的区别,TIME_WAIT和CLOSE_WAIT什么时刻出现,如何处理
- ANDROID打开系统设置或信息界面
- 证券回购市场repo market
- 第四节课 23设计模式分类说明
- Android中自定义View的MeasureSpec使用
- Libcurl使用入门教程
- 浅谈游戏(dota)中的炮塔攻击,人物攻击(未完待续)
- 第五节课 创建性模式(一)
- 【Perl读书笔记】基本数组,初始化
- 浅谈设备、驱动的加载和匹配
- C#学习之类
- 解决mysql“Access denied for user 'root'@'localhost'”