设计模式简介

一、设计模式简介

        编写软件过程中,程序员面临着来自耦合性,内聚性 以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好的:

                1、代码重用性(即:相同功能的代码,不用多次编写)

                2、可读性(即:编程规范性,便于其他程序员的阅读和理解)

                3、可扩展性(即:当需要增加新的功能时,非常方便,称为可维护性)

                4、可靠性(即:当我们增加新的功能后,对原来的功能没有影响)

                5、使程序呈现高内聚(功能模块内部联系非常紧密),低耦合(功能模块之间联系非常稀疏)的特性

二、设计模式原则

1.单一职责原则

        类的职责单一、对外值提供一种功能,而引起类变化的原因应该也只有一个

2.接口隔离原则(Interface Segregation Principle)

        为了达到一个类对另一个的依赖应该建立在最小的接口上这个要求,我们将原来的一个大的接口分散成几个小的接口

3.依赖倒转原则

        在开发过程中尽可能的依赖抽象层(接口/抽象类)而不是依赖实现层(类)。

4.里氏替换原则

        任何抽象类出现的地方都可以使用实现类代替

        核心内容:继承必须确保超类所拥有的性质在子类中仍然成立,也就是说在继承时,子类中不要去重写父类中已实现的方法。

简单用一句话来说就是:继承不重写、重载,父类出现的地方子类一定能出现,尽可能变继承为依赖。

5.开闭原则

        当软件\类需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。

6.迪米特法则

        迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽可能将逻辑封装在类的内部。对外除了提供的public方法,不对外泄露任何信息.

        迪米特法则的核心是降低类之间的耦合;但是注意:由于每个类都减少了不必要的依赖,因此迪米特法则只是要求降低类间(对象间)耦合关系,并不是要求完全没有依赖关系。

7.合成复用原则(Composite Reuse Principle)

        原则是尽量使用合成/聚合/组合的方式,而不是使用继承

三、设计模式分类

1.创建型模式(创建对象)

创建型模式共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

创建型设计模式的一些例子如下:

        抽象工厂模式,提供一个创建相关或依赖对象的接口,而不指定对象的具体类。

        工厂方法模式,允许一个类的实例化推迟到子类中进行。

        生成器模式,将一个复杂对象的创建与它的表示分离,使同样的创建过程可以创建不同的表示。

        原型模式,使用原型实例指定要创建的对象类型,通过复制原型创建新的对象。

        单例模式,保证一个类只有一个实例,并且提供对这个实例的全局访问方式。

2.结构性模式(软件结构)

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

        适配器模式:将一个物件的界面'转接'成当事人预期的样子。

        外观模式:对于已有的界面建立一个简化的界面以简化使用共通任务。

        享元模式:通过共享以便有效的支持大量小颗粒对象。

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

        桥接模式:将一个抽象与实现解耦,以便两者可以独立的变化。

        组合模式:树状结构的物件,每个物件有相同的界面

        修饰模式:对一个执行的类别,若使用继承方式加上新功能可能会新类别的数量呈指数型地增加,可使用此模式来解决。

3.行为型模式(功能方法的角度)

共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

        责任链模式:处理命令物件或将之传到下一个可以处理的物件。

        命令模式:命令物件将动作及参数封装起来。

        解释器模式:实作特制化的编程语言以解决一系列特殊的问题。

        迭代器模式:迭代器用于存取包含器中元素而不用透露底层实作的方式。

        观察者模式:亦即发行/订阅或事件聆听者。物件注册去聆听由另一个物作所引发的事件。

        备忘录模式:使一个物件还原到前一个状态的能力(rollback)。

        状态模式:在执行可以部分改变物件的一种方法。

        策略模式:在执行时依需求而选择算法。

        访问者模式: 一种从物件中取出算法的方式。

        模板方法模式:描述一个程式的骨架。

        调停者模式:对子系统中的界面集面提供一个统一的界面。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值