面向对象设计模式

设计模式简介

设计模式目的:

管理变化,提供复用

重构技法

静态->动态
早绑定->晚绑定
继承->组合
编译时依赖->运行时依赖
紧耦合->松耦合

设计模式的六大原则

1、开闭原则(Open Close Principle: OCP):对扩展开放,对修改关闭。
2、里氏代换原则(Liskov Substitution Principle: LSP):对开闭原则的补充。实现的关键步骤就是抽象化
3、依赖倒转原则(Dependence Inversion Principle: DIP)针对接口编程,依赖于抽象而不依赖于具体
4、接口隔离原则(Interface Segregation Principle: ISP):使用多个隔离的接口,比使用单个接口要好。降低类之间耦合度
5、迪米特法则(Demeter Principle):又称最少知道原则,尽量少实体与其他实体之间发生相互作用,使系统功能模块相对独立
6、合成复用原则(Composite Reuse Principle):尽量使用合成/聚合的方式,而不是使用继承

设计模式之间联系

在这里插入图片描述

设计模式分类

从目的分类分类

创建型模式 Creational

目的:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击
工厂模式 Factory
抽象工厂模式 Abstract Factory
单例模式 Singleton
建造者模式 Builder
原型模式 Prototype

结构型模式 Structural

目的:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击
适配器模式 Adapter
桥接模式 Bridge
过滤器模式 Filter、Criteria
组合模式 Composite
装饰器模式 Decorator
外观模式 Facade
享元模式 Flyweight
代理模式 Proxy

行为型模式 Behavioral

目的:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。
责任链模式 Chain of Responsibility
命令模式 Command
解释器模式 Interpreter
迭代器模式 Iterator
中介者模式 Mediator
备忘录模式 Memento
观察者模式 Observer
状态模式 State
策略模式 Strategy
模板模式 Template
访问者模式 Visitor

从封装变化角度分类

组件协作:模板模式、观察者模式、策略模式
单一职责:装饰者模式 、桥接模式
对象创建:工厂方法模式、 抽象工厂模式、原型模式模式、 建造者模式
对象性能:单例模式、享元模式
接口隔离:外观模式、代理、中介者模式、适配器模式
状态变化:备忘录模式 、状模式态
数据结构:组合模式、迭代器模式、责任链模式
行为变化:命令模式、访问者模式
领域问题:解释器模式

什么时候不用设计模式

a) 代码可读性很差时
b) 需求理解还很浅时
c) 变化没有显现时
d) 不是系统的关键依赖点
e) 项目没有复用价值时
f) 项目将要发布时

经验之谈

a) 不要为模式而模式
b) 关注抽象类 & 接口
c) 理清变化点和稳定点
d) 审视依赖关系
e) 要求Framework 和 Application 的区隔思维
f) 良好的设计是演化的结果

设计模式成长之路

a) “手中无剑,心中无剑” : 见模式而不知
b) “手中有剑,心中无剑” :可以识别模式,作为应用开发人员模式
c) “手中有剑,心中有剑” : 作为框架开发人员为应用设计某些模式
d) “手中无剑,心中有剑” : 忘掉模式,只有原则

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值