23种设计模式整体详解

Posted by admin On 9月 - 19 - 2022

职责链模式包含如下角色:Handler:抽象处理者ConcreteHandler:具体处理者Client:客户类**如何学习设计模式****说明,《如何学习设计模式》转摘自:http://blog.csdn.net/yqj2065/article/details/39103857**学习技巧学习设计模式时,有一些技巧能够帮助你快速理解设计模式。

抽象工厂请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用FactoryMethod模式,带着MM到服务员那儿,说「要一个汉堡」,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。

代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。

恰当的使用设计模式可以代码的可复用性,可维护性,可扩展性,健壮性及安全性,这些都是系统非常重要的非功能性需求。

命令模式:将命令请求封装为一个对象,使得可以用不同的请求来进行参数化。

为什么不要耦合,而要独立?就像专业分工大大提升了人类社会的生产效率,**软件模块也要追求分工,实现职责明确**。

LSP是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。

简单说:**模式:在某些场景下,针对某类问题的某种通用的解决方案。

在使用接口隔离原则时,我们需要注意控制接口的粒度,接口不能太小,如果太小会导致系统中接口泛滥,不利于维护。

比如在Java、C、C++语言当中,都可以使用到设计模式。

**创建型模式CreationalPattern**1.单例模式2.抽象工厂模式3.工厂方法模式4.建造者模式5.原型模式**结构型模式StructuralPattern**1.适配器模式2.装饰器模式3.代理模式4.外观模式5.桥接模式6.组合模式7.享元模式**行为型模式BehavioralPattern**1.策略模式2.模板方法模式3.观察者模式4.迭代子模式5.责任链模式6.命令模式7.备忘录模式8.状态模式9.访问者模式10.中介者模式11.解释器模式**设计模式三大类是按照特性什么划分的?****创建型模式:**主要用于处理对象的创建,实例化对象。

根据接口隔离原则,当一个接口太大时,我们需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。

*结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

接口也不能太大,太大的接口将违背接口隔离原则,灵活性较差,使用起来很不方便。

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

项目中【**合理的**】运用设计模式可以【**巧妙的解决很多问题】**。

既然不满足需求,那么问题到底出在哪呢?回过头来再梳理一下,我们发现或许我们的思路一开始就出现了偏差,交通灯能换颜色吗?显然是不能的,因为每个灯的颜色是固定的,我们所谓的换颜色,实际上换的是灯,难道要用工厂方法模式来创造不同颜色的灯?显然也不合适,三个灯一开始就在那里,只是循环切换而已,不存在创建的过程。

观察者模式包含如下角色:Subject:目标ConcreteSubject:具体目标Observer:观察者ConcreteObserver:具体观察者18.备忘录模式后悔药人人都想要,但是事实却是残酷的,根本就没有后悔药可买,但是也不仅如此,在软件的世界里就有后悔药!备忘录模式就是一种后悔药,它给我们的软件提供后悔药的机制,通过它可以使系统恢复到某一特定的历史状态。

保存就要消耗资源,所以备忘录模式的缺点就在于消耗资源。

装饰者模式,动态地将责任附加到对象上。

块钱一份,你要不要)原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。

组合模式请看:http://www.cnblogs.com/wxisme/p/4692637.html**小结:**各种设计模式应该是经常组合起来用的而并不是单独使用。

TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

访问者模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类。

就扩展功能而言,它比生成子类方式更为灵活。

在工厂类的基础上再增加一个工厂类,该工厂类不制造具体的被调用对象,而是制造不同工厂对象。

在这里我们可以通过使用装饰者模式来解决这个问题。

设计模式设计模式(DesignPattern)代表了最佳的实践,设计模式的每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。

在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限。

只不过在看过《设计模式》一书之前,你可能意识不到这是一个成体系的设计手段。

Add your comment