设计模式

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。


六个原则

设计模式总有六个原则:单一职责原则、开闭原则、依赖倒转原则、里式替换原则、迪米特法则、接口隔离原则。

单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。
单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关实践经验。

开闭原则:对于扩展开放,对于更改封闭。(即软件实体应尽量在不修改原有代码的情况下进行扩展。)
为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。

依赖倒转原则
1. 高层模块不应该依赖低层模块。二者都应该依赖抽象
2. 抽象不应该依赖于细节。细节应该依赖于抽象。
要针对接口编程,而不是针对实现编程

里式替换原则:子类型必须能够替换它们的父类型。(子类可以扩展父类的功能,不能改变父类的原有功能)
里氏代换原则是实现开闭原则的重要方式之一。

迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应该直接的相互作用,如果其中一个类调用另一个类的一个方法,可以通过第三个类转发这个调用。
迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。

接口隔离原则:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口

六个原则的总结
对这六个原则的遵守并不是是和否的问题,而是多和少的问题,也就是说,我们一般不会说有没有遵守,而是说遵守程度的多少。任何事都是过犹不及,设计模式的六个设计原则也是一样,制定这六个原则的目的并不是要我们刻板的遵守他们,而需要根据实际情况灵活运用。对他们的遵守程度只要在一个合理的范围内,就算是良好的设计。我们用一幅图来说明一下。
这里写图片描述


三大类

创建型模式(共5种设计模式)

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

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

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

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

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

结构型模式(共有7种设计模式)

适配器模式:将一个类的接口转换成客户希望的另一个接口。

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

组合模式:将对象组合成树形结构以表示部分—-整体的层次结构。

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

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

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

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

行为型模式(共有11种设计模式)

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

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

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

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

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

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

中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值