23种设计模式简介

零、设计模式的原则
1.开闭原则:软件的维护性,复用性,扩展性。
2.里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。
3.依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(比如顾客实体中的购买方法参数应该是商店接口而不是某个具体商店)。
4.单一职责原则:一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。
该原则提出对象不应该承担太多职责,如果一个对象承担了太多的职责,至少存在以下两个缺点:
一个职责的变化可能会削弱或者抑制这个类实现其他职责的能力;
当客户端需要该对象的某一个职责时,不得不将其他不需要的职责全都包含进来,从而造成冗余代码或代码的浪费。
5.接口隔离原则:要为各个类建立它们需要的专用接口,而不要建立一个庞大的接口供所有依赖它的类去调用。将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。
6.迪米特法则:又叫作最少知识原则,如果两个实体无须直接通信,就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。
7.合成复用原则:它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。(通常类的复用分为继承复用和合成复用两种)。
合成复用方式的优点是灵活性高,耦合度低。

一、创建型模式:这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。
1.单例模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例。
2.工厂模式:定义一个用于创建产品的接口,根据用户输入的条件,由子类决定生产什么产品。
3.原型模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型相同的新实例。
4.抽象工厂模式:围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。
5.建造者模式:使用多个简单的对象一步一步构建成一个复杂的对象。

二、结构型模式:这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
1.代理模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。(可以将被代理类设置为代理类的变量)
2.适配器模式:是作为两个不兼容的接口之间的桥梁。它结合了两个独立接口的功能。在原来的其中一个类里加入适配器作为全局变量(适配器中有另一个类对象做全局变量),整合两个类或两个接口。
3.桥接模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现的(创建一个抽象类,用原来的接口作变量,再创建继承这个抽象类的类)
4.装饰模式:动态地给对象增加新的功能,同时又不改变其结构。(将原来的对象当做构造参数传进装饰器对象,调用与原对象名字相同的方法来加强原来的方法)
5.外观模式:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。)(组合了原来的多个子系统)
6.享元模式:尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。主要用于减少创建对象的数量。
7.组合模式:用于把一组相似的对象当作一个单一的对象,依据树形结构来组合对象,用来表示部分以及整体层次。它创建了对象组的树形结构。(例如总监--经理--员工的总监结构)

三、行为型模式:这些设计模式特别关注对象之间的通信。
1.模板模式:定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类在可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
2.策略模式:一个类的行为或其算法随着选择的策略的改变而改变。不同的算法封装在不同的策略中。
3.命令模式:把请求包裹在不同的命令对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
4.责任链模式:为请求创建了一个接收者对象的链。通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,拦截的类都实现统一接口。
5.状态模式:允许对象在内部状态(属性/变量)发生改变时改变它的行为,对象看起来好像修改了它的类。
6.观察者模式:多个对象间存在一对多关系,当一个对象被修改时,则会自动通知它的依赖对象。一个被观察者有多个观察者(广播)。
7.中介模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,是用来降低多个对象和类之间的通信复杂性。将网状结构分离为星型结构。
8.迭代器模式:顺序访问集合对象中的数据,而不暴露集合对象的底层表示。(外部类返回迭代器,内部类实现迭代器的hasNext和next方法)。
9.访问者模式:使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。
10.备忘录模式:保存一个对象的某个状态,以便在适当的时候恢复对象。主要包含一个保存历史对象的类。
11.解释器模式:提供如何定义语言的文法,以及对语言句子的解释方法,即解释器。实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值