个人学习设计模式总结
学习设计模式之前,我们应该总体了解一下各个设计模式的特性和使用环境,毕竟设计模式是一些固定问题得解决方案;了解设计模式可以从各个设计模式属于那个种类入手,知道了设计模式属于哪个类别才能应用到的具体实现中。了解了设计模式是远远不够的,还要求我们很清楚的知道面向对象设计的基本设计原则,在学习设计模式中慢慢体会基本原则,才能体会到面向对象设计的精华所在。下面对设计模式和设计原则进行总结
一、设计模式大体分为三个种类:
1.Creational 模式
物件的产生需要消耗系统资源,所以如何有效率的产生、管理与操作物件,一直都是值得讨论的课题, Creational 模式即与物件的建立相关,在这个分类下的模式给出了一些指导原则及设计的方向。
Simple Factory 模式
Abstract Factory 模式
Builder 模式
Factory Method 模式
Prototype 模式
Singleton 模式
Registry of Singleton 模式
2.Structural 模式
如何设计物件之间的静态结构,如何完成物件之间的继承、实现与依赖关系,这关乎着系统设计出来是否健壮(robust):像是易懂、易维护、易修改、耦合度低等等议题。Structural 模式正如其名,其分类下的模式给出了在不同场合下所适用的各种物件关系结构。
Default Adapter 模式
Adapter 模式 - Object Adapter
Adapter 模式 - Class Adapter
Bridge 模式
Composite 模式
Decorator 模式
Facade 模式
Flyweight 模式
Proxy 模式(一)
Proxy 模式(二)
3.Behavioral 模式
物件之间的合作行为构成了程式最终的行为,物件之间若有设计良好的行为互动,不仅使得程式执行时更有效率,更可以让物件的职责更为清晰、整个程式的动态结构(像是物件调度)更有弹性。
Chain of Responsibility 模式
Command 模式
Interpreter 模式
Iterator 模式
Mediator 模式
Memento 模式
Observer 模式
State 模式
Strategy 模式
Template Method 模式
Visitor 模式
二、设计模式基本原则
1.封装变化,找出变化部分将其封装起来,不要和那些不变化的部分混在一起。此原则几乎是所有设计模式背后精神所在。
2.多用组合,少用继承。
3.针对接口编程,不针对实现编程。
4.为交互对象松耦合设计而努力
5.修改封闭,扩展开放(开闭原则)
6.依赖抽象
7.最少知道原则:a.该对象本身 b.被当做参数传递对象 c.此方法所创建或实例化得任何对象 d.对象的任何组件。
8.好莱坞原则:别调用我们,我们会调用你。
。。。等等原则。
为了更好的解释第七个原则,我将HeadFrist上面的例子在此应用:
public class Car
{
Engine engine; //d.对象的任何组件。
public car(){}
public void start(Key key) //b.被当做参数传递对象
{
Door doors = new Door(); //c.此方法所创建或实例化得任何对象
bool authorized = key.turns(); //b.被当做参数传递对象
if(authorized)
{
engin.start(); //d.对象的任何组件。
updateDashborarDisplay(); //a.该对象本身
doors.lock(); //c.此方法所创建或实例化得任何对象
}
}
public void updateDashborarDisplay()
{
//代码实现
}
}
以上内容部分内容来自网络和HeadFirst,写此文章目的有两个:给自己作写笔记和帮组新同学。谢谢。。
出处:http://ajian.cnblogs.com
本文版权归作者和博客园所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。