设计模式基本概念

什么是设计模式?它的四个基本要素是什么?设计模式按照其目的可分为创建型、结构型、行为型,三者的作用是什么,包含哪些具体设计模式?7大设计原则是什么?


设计模式是前人经验的总结,它使人们可以方便地复用成功的设计和架构。它的四个基本要素是模式名称、问题、解决方案、效果
创建型模式用于描述“怎样创建对象”,主要特点是“将对象的创建与使用分离”。创建型5种(建原工抽单)包括:建造者、原型、工厂、抽象工厂、单例模式。


结构型模式用于描述如何将类或对象按照某种布局组成更大的结构。结构型7种(桥代理组装外箱适配器)包括:桥接、代理、组合、装饰器、外观、享元、适配器模式。


行为型模式用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。行为型11种(责备三者两器,命令状态莫策)包括:责任链、备忘录、访问者、中介者、观察者、迭代器、解释器、命令、状态、模板方法、策略模式。


7大设计原则(狄依杰合理开单原则):
1.迪米特最少知道原则(Law of Demeter Principle):一个实体应尽量少的与其它实体发生相互作用。
2.依赖倒转原则(Dependency Inversion Principle):抽象不依赖细节,细节应依赖抽象。针对接口编程,而不要针对具体实现编程。
3.接口隔离原则(Interface Segregation Principle):使用多个专门的接口来取代一个统一的接口。
4.合成复用法则(Composite Reuse Principle):尽量多使用组合/聚合关系,而少使用继承关系。
5.李氏替换原则(Liskov Substitution Principle):任何基类可以出现的地方,子类一定可以出现。子类可以扩展父类的功能,但不能改变父类原有的功能。子类继承父类时尽量不要重写父类的方法。
6.开闭原则(Open-Closed Principle):对扩展开放,对修改关闭。
7.单一职责原则(Single Responsibility Principle):类的职责要单一,不要将太多的职能放在一个类中。


一. 创建型: 工抽单建原。
1.建造者模式Builder:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。
2.原型模式Prototype:用一个已经创建的实例作原型,通过复制该原型对象来创建一个和原型相似的新对象。
3.工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,它使一个类的实例化延迟到子类。
4.抽象工厂模式:提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类。
5.单例模式Singleton:一个类只有一个实例,且该类能自行创建这个实例,有懒汉式单例和饿汉式单例。


二. 结构型: 桥代理组装外箱适配器。
1.桥接模式Bridge:将抽象与实现分离,使他们可以独立变化。
2.代理模式Proxy:为其他对象提供一种代理以控制对这个对象的访问。
3.组合模式Composite:将对象组合成树型结构以表示“整体-部分”的层次结构,使访问具有一致性,如访问目录。
4.装饰器模式Decrator:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责的模式。
5.外观模式Facade:为多个复杂的子系统提供一个一致的高层接口,使这些子系统更加容易被访问的模式。
6.享元模式Flyweight: 运用共享技术来有效地支持大量细粒度对象的复用,如星际中创建兵种。
7.适配器模式Adapter:将一个类的接口转换成另一个接口,使原本由于接口不兼容而不能一起工作的类能一起工作。


三. 行为型:责备三者两器,命令状态莫策。
1.责任链模式:将所有请求的处理者通过前一对象记住其下一对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
2.备忘录模式Memento:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态,它提供了一种可以恢复状态的机制。
3.访问者模式Visitor:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素新的操作,为数据结构中的每个元素提供多种访问方式。
4.中介者模式Mediator:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散。
5.观察者模式Observer:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
6.迭代器模式Iterator:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。
7.解释器模式Interpreter :给分析对象定义一个语言,定义该语言的文法表示,再设计一个解析器来解释语言中句子。
8.命令模式Command:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,方便将命令对象进行储存、传递、调用、增加与管理。
9.状态模式: 对有状态的对象,把复杂的判断逻辑提取到不同对象中,允许状态对象在内部状态改变时改变其行为。
10.模板方法模式Template Method:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
11.策略模式Strategy:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,如各种排序算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值