之前,朋友一直和我提起设计模式,于是,我就开始在网上搜索一些关于设计模式的资料,简单的看了工厂模式(主要想开发一个数据库抽象层),觉得里面提到的思想蛮好的,可以解决很多我一直都在犯的错误,所以,决定好好学习设计模式。
某日,去读书馆还借了一个假期的书,随便看看读书馆是否有关于设计模式这类书籍可借,运气蛮好的学校还有这样的书籍,最终,选择了由精华大学出版社出版的《研磨设计模式》。
好了,就不扯了,回到主题吧,那设计模式到底是什么东西?书上原话“设计模式是经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案。”说白了,其实就是类似于我们在数学中的学习的公式(公式是经前辈们验证过的,用于解决在某种情况下的某种问题,这样的问题书中、试卷里是经常出现的)。
1.设计模式有什么?(打个不太恰当的比喻:一元二次求根公式)
模式名称(就是我们的公式名称一样,例如:求根公式)
环境和问题(一元二次方程,求根)
解决方案(就是求根公式的使用)
效果(比较好的,只要是一元二次方程都可以用该公式求根)
以上也是设计模式的四要素。
2.设计模式的分类?
创建型模式:抽象了对象实例化的过程,用来帮助创建对象的实例。(我认为这是实现面向接口编程的重要模式)
结构型模式:描述如何组合类和对象以获得更大的结构。
行为型模式:描述算法和对象间职责的分配。
常用设计模式一览表
类型 | 模式名称 | 学习难度 | 使用频率 |
创建型模式 Creational Pattern | 单例模式 Singleton Pattern | ★☆☆☆☆ | ★★★★☆ |
简单工厂模式 Simple Factory Pattern | ★★☆☆☆ | ★★★☆☆ | |
工厂方法模式 Factory Method Pattern | ★★☆☆☆ | ★★★★★ | |
抽象工厂模式 Abstract Factory Pattern | ★★★★☆ | ★★★★★ | |
原型模式 Prototype Pattern | ★★★☆☆ | ★★★☆☆ | |
建造者模式 Builder Pattern | ★★★★☆ | ★★☆☆☆ | |
结构型模式 Structural Pattern | 适配器模式 Adapter Pattern | ★★☆☆☆ | ★★★★☆ |
桥接模式 Bridge Pattern | ★★★☆☆ | ★★★☆☆ | |
组合模式 Composite Pattern | ★★★☆☆ | ★★★★☆ | |
装饰模式 Decorator Pattern | ★★★☆☆ | ★★★☆☆ | |
外观模式 Façade Pattern | ★☆☆☆☆ | ★★★★★ | |
享元模式 Flyweight Pattern | ★★★★☆ | ★☆☆☆☆ | |
代理模式 Proxy Pattern | ★★★☆☆ | ★★★★☆ | |
行为型模式 Behavioral Pattern | 职责链模式 Chain of Responsibility Pattern | ★★★☆☆ | ★★☆☆☆ |
命令模式 Command Pattern | ★★★☆☆ | ★★★★☆ | |
解释器模式 Interpreter Pattern | ★★★★★ | ★☆☆☆☆ | |
迭代器模式 Iterator Pattern | ★★★☆☆ | ★★★★★ | |
中介者模式 Mediator Pattern | ★★★☆☆ | ★★☆☆☆ | |
备忘录模式 Memento Pattern | ★★☆☆☆ | ★★☆☆☆ | |
观察者模式 Observer Pattern | ★★★☆☆ | ★★★★★ | |
状态模式 State Pattern | ★★★☆☆ | ★★★☆☆ | |
策略模式 Strategy Pattern | ★☆☆☆☆ | ★★★★☆ | |
模板方法模式 Template Method Pattern | ★★☆☆☆ | ★★★☆☆ | |
访问者模式 Visitor Pattern | ★★★★☆ | ★☆☆☆☆ |
【作者:刘伟 http://blog.csdn.net/lovelion】
设计模式名称 | 讲解实例 | 练习实例 |
创建型模式——创建的艺术 | ||
单例模式 | Windows任务管理器、负载均衡器 | 数据库连接池 |
简单工厂模式 | 图表库 | 几何图形绘图工具 |
工厂方法模式 | 日志记录器 | 图片读取器 |
抽象工厂模式 | 界面皮肤库 | 手机游戏软件 |
原型模式 | OA系统工作周报、OA系统公文管理器 | 销售管理系统中的客户类 |
建造者模式 | RPG网络游戏中的游戏角色 | 视频播放软件 |
结构型模式——组合的艺术 | ||
适配器模式 | 教务管理系统与算法库重用 | OA系统加密模块 |
桥接模式 | 跨平台图像浏览系统 | 数据转换工具 |
组合模式 | 杀毒软件 | 界面控件库 |
装饰模式 | 图形界面构件库、OA系统文档处理 | 数据加密模块 |
外观模式 | 文件加密模块 | 智能手机控制与管理软件一键备份功能 |
享元模式 | 围棋软件 | 多功能文档编辑器 |
代理模式 | 收费商务信息查询系统、OA系统方法调用日志 | 网络图片查看器 |
行为型模式——交互的艺术 | ||
职责链模式 | SCM系统之采购审批子系统 | OA系统假条审批模块 |
命令模式 | 自定义功能键、简易计算器、网站配置文件管理工具 | 公告板系统 |
解释器模式 | 机器人控制程序、基于字符界面的格式化指令 | 数据库同步指令 |
迭代器模式 | 销售管理系统数据遍历 | 教务管理系统学生信息遍历、逐页迭代器 |
中介者模式 | CRM系统客户信息管理窗口 | 图形界面类库 |
备忘录模式 | 中国象棋软件 | RPG网游 |
观察者模式 | 多人联机对战游戏 | 自定义登录组件、实时在线股票软件 |
状态模式 | 银行系统、屏幕放大镜工具 | 纸牌游戏软件 |
策略模式 | 影院售票系统 | 飞机模拟系统 |
模板方法模式 | 银行业务支撑系统利息计算模块、销售管理系统数据图表显示功能 | 数据库操作模块 |
访问者模式 | OA系统员工数据汇总 | 奖励审批系统 |