设计模式漫谈

1.设计模式

      设计模式,是(Design Pattern)是解决问题的一系列套路。设计模式的出发点,不在程序运行的高效性,而在程序的工程性;因此,设计模式很重要的篇幅是如何解耦,从而让程序可以分隔而让程序更好维护。

       设计模式真正成为一种“显学”,是由于GoF(Gang of Four,中文戏称为“四人帮”)在1995年写的《设计模式:可复用面向对象软件的基础》(Design Patterns - Elements of Reusable Object-Oriented Software)一书。在该书中,GoF提出了23种设计模式。随着时间发展,又有人基于这些模式,提出了更多的模式。但这23种设计模式显然是基础。

2.设计模式的思想基础

       设计模式的出发点是工程性,因此,重在解耦与程序的可扩展性。

       设计模式的思想基础为软件设计的六大原则:

1)开闭原则(Open Close Principle):可以扩展,但不支持修改。

2)里氏替换原则(Liskov Substitution Principle):里氏替换原则是面向对象设计的基本原则之一;里氏原则要求,在任何基类可以出现的地方,子类都可以出现。里氏替换原则是对开闭原则的扩充。

3)依赖倒置原则(Dependency Inversion Principles):这个原则是开闭原则的基础,要求针对接口编程,依赖于抽象而不依赖于具体。

4)接口隔离原则(Interface Segregation Principles):使用多个隔离的接口,比使用单个接口要好。

5)迪米特法则(Demeter Principle):又称为最少知道原则;一个实体应当尽少量与其他实体之间发生交互作用,使得系统功能模块相对独立。

6)合成复用原则(Composite Reuse Principles):尽量使用合成/聚合的方式,而不是使用继承。

3.设计模式的分类

       设计模式分为创建型设计模式、结构型设计模式和行为型设计模式。

       创建型设计模式提供了创建实体的方式,而不是new方法创建实例。

结构型设计模式关注抽象结构的组合,用组合方式实例化而不是继承方式。

行为型设计模式注重不同实体直接的通信。

创建型设计模式包括:(1)工厂模式(Factory Pattern);(2)抽象工厂模式(Abstract Factory Pattern);(3)单例模式(Singleton Pattern):(4)建造者模式(Builder Pattern);(5)原型模式(Prototype Pattern)。

结构型设计模式包括:(6)适配器模式(Adpter Pattern);(7)桥接模式(Bridge Pattern);(8)组合模式(Composite Pattern);(9)装饰器模式(Decorator Pattern);(10)外观模式(Facade Pattern);(11)享元模式(Flyweight Pattern);(12)代理模式(Proxy Pattern);

行为型模式包括:(13)责任链模式(Chain of Responsiblity Pattern);(14)命令模式(Command Pattern);(15)解释器模式(Interpreter Pattern);(16)迭代器模式(Iterator Pattern);(17)中介者模式(Mediator Pattern);(18)备忘录模式(Momento Pattern);(19)观察者模式(Observer Pattern);(20)状态模式(State Pattern);(21)策略模式(Strategy Pattern);(22)模板方法模式(Template Pattern);(23)访问者模式(Visitors Pattern)。

4.设计模式的好处与坏处

      设计模式的坏处在于:会写更多的代码,会让代码变得开起来更复杂;如果修改代码,会让涉及更多的部分。

      设计模式的好处在于:不同模块之间,依赖减少;可以使不同模块之间进行各自独立开发,从而有利于程序的扩大,从而有利于项目的开发。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值