设计模式——总结

8 篇文章 0 订阅
6 篇文章 0 订阅

OOTV杯超级设计模式大赛开赛了,设计模式的姐妹们争相报名。下面我介绍一下OOTV超级设计模式大赛的与会人员。


首先是OOTV创始人——面向对象,主持人——GOF,策划、导演、监制——抽象、封装、继承和多态,详情请见http://blog.csdn.net/lxf68/article/details/43310953

评委是上图中的六大原则:单一职责原则、开放-封闭原则、依赖倒转原则、里氏代换原则、最少知识(迪米特法则)、合成/聚合复用原则,详情请见http://blog.csdn.net/lxf68/article/details/43564939

参赛者一共有23人,分别分成了三组,第一组为上图的创建型:单例模式、建造者模式、原型模式以及三大工厂姐妹(简单工厂模式、工厂方法模式、抽象工厂模式);第二组为上图的结构型:适配器模式、装饰模式、桥接模式、组合模式、享元模式、代理模式、外观模式;第三组为上图的行为型:观察者模式、模板方法模式、命令模式、状态模式、职责链模式、解释器模式、中介者模式、访问者模式、策略模式、备忘录模式、迭代器模式。

比赛现场:

第一组:创建型模式

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子

                         类。

原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

第二组:结构型模式

适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工

                     作的那些类可以一起工作。

桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具

                  有一致性。

装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更容

                 易使用。

享元模式:运用共享技术有效地支持大量细粒度的对象。

代理模式:为其他对象提供一种代理以控制对这个对象的访问。

第三组:行为型模式

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知

                     并自动更新。

模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法

                         的结构即可重定义该算法的某些特定步骤。

命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,

                  以及支持可撤销的操作。

状态模式:允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。

职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条

                      链,并沿着这条链传递该请求,直到有一个对象处理它为止。

解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的

                     句子。

中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松

                     散,而且可以独立地改变它们之间的交互。

访问者模式:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这

                     些元素的新操作。

策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的

                 客户而变化。

备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并对该对象之外保持这个状态。这样以后就可将

                     该对象恢复到原先保存的状态。

迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。

比赛已经全部结束,评委点评:六大原则

创建型模式:隐藏了这些类的实例是如何被创建和放在一起整个系统关于这些对象所知道的是由抽象类所定义的接

                     口。这样,创建型模式在What、Who、How,以及When这些方面提供了很大的灵活性。创建型模式抽

                     象了实例化的过程,帮助一个系统独立于如何创建、组合和表示它的那些对象。

结构型模式:被称为“死亡之组”,结构模式描述的是如何和组合类和对象已获得更大的结构。

                     类模式和对象模式之间的区别是:类描述的如何通过继承提供更有用的接口,而对象描述的是通过使用

                     对象的组合或将对象包涵在别的对象里面以获得更有用的结构。

行为型模式:行为型模式设计到算法和对象间的职责分配,不仅描述对象或类的模式,还描述它们之间的通信方式,

                     刻划了运行时难以跟踪的复杂的控制流,它们将你的注意力从控制流转移到对象间的关系上来。

三种类型的模式各有各的特点,六大原则不能很好的判断哪个优哪个劣。

各位大牛的意见呢?

总结:

二十三种设计模式,六大原则,都处在非常重要的位置,需要我们好好把握。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值