设计模式

从零开始重新认知设计模式

一直想学设计模式,也下过决心学习过一段时间,但总是由于各种原因被迫放弃了学习计划,老是断断续续的,导致到现在也没有走下来一遍,今天开始,从这个博客开始,重新拾起设计模式的学习计划!奥利给!

  • 什么是设计模式?
    设计模式,即Design Patterns,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。

  • 为什么要使用设计模式?
    根本原因还是软件开发要实现可维护、可扩展,就必须尽量服用代码,并且降低代码的耦合度。设计模式主要基于OOP编程提炼的,它基于六大原则。

  • 设计模式的六大原则(也有人说是七大原则)
    开闭原则(Open Close Principle)
    开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,抑郁维护和升级。
    里氏代换原则(Liskov Substitution Principle)
    里氏代换原则是面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是集成复用的基石,只有当派生类可以替换掉基类,切软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上附加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类于子类的集成关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
    依赖倒转原则(Dependence Inversion Principle)
    这个原则是开闭原则的基础,具体内容:针对借口编程,依赖抽象而不依赖具体。
    接口隔离原则(interface Segregation Principle)
    这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可实现设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调低依赖,降低耦合。
    迪米特法则/最少知道原则(Demeter Principle)
    最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
    合成复用原则(Composite Reuse Principle)
    合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。
    ** 单一职责原则(Single Responsibility Principle)**
    一个类或者一个方法只负责一项职责,尽量做到类的只有一个行为原因引起变化;

  • 设计模式的类型
    根据设计模式的参考书Design Patterns - Elements Of Reusable Object-Orienter Software中所提到的,总共有23中设计模式。这些模式可以分为三大类:创建型模式,结构性模式,行为型模式。还有另一种设计模式:J2EE设计模式。

序号模式类型描述模式
1创建型模式这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用new运算符直接实例化对象。这使得程序在判断对某个给定实例需要创建那些对象时更加灵活。工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式
2结构性模式这些设计模式关注类和对象的组合。集成的概念被用来组合接口和定义组合对象获得新功能的方式。适配器模式、桥接模式、过滤器模式、组合模式、装饰器模式、外观模式、享元模式、代理模式
2行为模式这些设计模式特别关注对象之间的通信责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、空对象模式、策略模式、模板模式、访问者模式
3J2EE模式这些是设计模式特别关注表示层,这些模式是由sun Java center鉴定的MVC模式、业务代表模式、组合实体模式、数据访问对象模式、前端控制器模式、拦截顾虑器模式、服务定位器模式、传输对象模式
  • 设计模式之间的关系
    设计模式关系图
    (注:该设计模式关系图不完善,后续可能更新)
    根据上图的关系,我们可以看出以下几个模式是跟其他的模式关系相当密切的,也就是我们需要重点掌握的集中模式:
  • 组合模式(Composite)
  • 迭代器模式(iterator)
  • 抽象工厂模式(Abstract Factory)
  • 享元模式(Flyweight)
  • 访问者模式(Visitor)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值