设计模式概述

设计模式可以理解为面向对象设计原则下一组编码规范,是对类的封装、继承、多态以及关联关系和组合关系充分理解后精炼出的规范模型。

我们学习设计模式本质也是为了能用到自己的框架代码中,目前市面上主流的框架如 Spring、Mybaits 等等或多或少都有借鉴和使用设计模式,下面正式开始:

目前总结出的设计模式有23种,根据目的可以分为以下三大类:

  • 创造型:描述如何创建对象,将对象的创建与使用分离
  • 结构型:描述如何将类或对象按某种布局组成更大结构
  • 行为型:描述类或对象之间如何协作实现单个对象无法实现的操作,以及怎样分配职责

创造型包含以下五种设计模式:单例、原型、工厂方法、抽象工厂、建造者

  • 单例:某个类只能包含一个对象
  • 原型:以某个类作为原型,通过它复制出个多个类似实例
  • 工厂方法:定义创建某一类实例的接口,通过子类具体实现
  • 抽象工厂:定义创建某一大类实例的接口,通过子类具体实现
  • 建造者:将复杂对象拆分多个简单部分,根据不同需要创建它们,最后构建复杂对象

结构型包含以下七种设计模式:代理、适配器、桥接、装饰、外观、享元、组合

  • 代理:为某实例提供代理,通过代理间接访问真实实例,削弱客户访问范围
  • 适配器:将一个类的接口转换成另一个接口,使原本不兼容的类能够兼容
  • 桥接:将抽象和实体分离,使它们可以独立变化
  • 装饰:动态给对象增加一些功能
  • 外观:为多个复杂的功能提供一致接口
  • 享元:应用共享技术支持对象复用
  • 组合:将对象组合成树状层次结构,使用户对单个对象和组合对象访问一致

行为型包含以下十一种设计模式:模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器

  • 模板方法:定义大框架,留下一部分到子类实现,子类可以在不改变大框架的形式下修改核心算法
  • 策略:定义一系列算法,并封装,使它们可以相互替换
  • 命令:将一个请求封装为一个对象,使发出请求和执行请求的责任分开
  • 职责链:把请求从链中的一个对象传到下一个对象,直到请求被响应
  • 状态:允许一个对象在其内部状态发生改变时改变其行为能力
  • 观察者:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为
  • 中介者:定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度
  • 迭代器:提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示
  • 访问者:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式
  • 备忘录:在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复
  • 解释器:提供如何定义语言的文法,以及对语言句子的解释方法

要想设计好的程序,只使用设计模式还不够,还需要尽可能遵守以下七大原则:

  • 开闭原则:对扩展开放,对修改关闭
  • 依赖倒置原则:高层不应该依赖低层,要面向接口编程
  • 单一职责原则:一个类只干一件事,实现类要单一
  • 接口隔离原则:一个接口只干一件事,接口要精简单一
  • 迪米特法则:一个类应该保持对其它对象最少的了解,降低耦合度
  • 里氏替换原则:不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义
  • 合成复用原则:尽量使用组合或者聚合关系实现代码复用,少使用继承

总得来说,所有原则可以统称为:低耦合,高内聚、可复用、可拓展,可维护。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值