个人学习设计模式总结

学习设计模式之前,我们应该总体了解一下各个设计模式的特性和使用环境,毕竟设计模式是一些固定问题得解决方案;了解设计模式可以从各个设计模式属于那个种类入手,知道了设计模式属于哪个类别才能应用到的具体实现中。了解了设计模式是远远不够的,还要求我们很清楚的知道面向对象设计的基本设计原则,在学习设计模式中慢慢体会基本原则,才能体会到面向对象设计的精华所在。下面对设计模式和设计原则进行总结
一、设计模式大体分为三个种类:
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,写此文章目的有两个:给自己作写笔记和帮组新同学。谢谢。。











posted @ 2009-07-31 11:30  D董一点  阅读(609)  评论(0编辑  收藏  举报