23种设计模式及设计原则简略总结

计模式的原则:

开闭原则:拓展开放,修改关闭。模块化开发
里氏替换:子类尽量不要改写父类,可以扩展父类功能。
依赖倒置:面向接口编程,不面向实现编程。提高代码灵活性,降低模块耦合。
单一职责:责任功能单一化。提高代码可读性,可维护性,降低复杂度和风险。
接口隔离:接口要更小更具体,避免臃肿和复杂。提高内聚性,降低耦合度。分类专业化。
迪米特法则:只跟朋友聊天,避免陌生人说话。只暴露该暴露的方法,只依赖要依赖的对象。降低耦合,提高复用率,独立性,扩展性。
合成复用:尽量使用组合或聚合实现。按特性,合入一类,用于接口出入参。

 

创建型
1,单例模式:只创建一个对象
2,原型模式:抽象类的具体实现允许克隆
3,工厂方法模式:抽象工厂具体工厂,抽象产品具体产品,工厂制造产品,某一族一类产品
4,抽象工厂模式:抽象工厂模式是工厂方法模式的升级版本,多族多类产品
5,建造者模式:具体建造者实现抽象建造者接口。指挥者指挥具体建造者完成对产品的创建。

结构型
6,代理模式:真实主题实现抽象主题的业务,代理类实现抽象主题接口,并在方法中包含对真实主题的引用,可以扩展真实主题。
7,适配器模式:通过适配器,适配者接口转换成目标接口,完成通信。
8,桥接模式:抽象与实现分离,实现细节对客户透明。用组合替代继承
9,装饰模式:动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。
10,外观模式:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。(如买房的流程集中到)
11,享元模式:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。
12,组合模式:是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。

行为型
13,模板方法模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
14,策略模式:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。
15,命令模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。
16,责任链模式:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
17,状态模式:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。
18,观察者模式:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
19,中介者模式:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。
20,迭代器模式:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。
21,访问者模式:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。
22,备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。
23, 解释器模式:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。

 

讲解来源:http://c.biancheng.net/view/1320.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值