设计模式 预备知识

设计模式笔记—— 预备知识

学习设计模式并不能让你的代码跑得飞起,但是能不996,所以只要是面向对象设计,必学
请各位至少熟读c艹primer再来看
OMT表示法就不说了,自己去翻书,拍照比较糊;而且现在谁还用OMT啊,都是UML了,自己网上找教程,学OMT也没用

1.重新理解面向对象

隔离变化:抵御软件变化带来新变化的一种构建模式
各司其职:新需求导致的变化不应该影响原类型的实现
对象是什么:封装了代码和数据,是一种公共接口,也是有责任的抽象,也就是说接口一样,实现不一样

2.原则

原则比模式更重要,所有的设计模式都是依赖原则推导出来的,建议全文背诵

依赖倒置原则(DIP):

高层模块不应该依赖底层模块,二者都应该依赖于抽象,抽象不应该依赖于实现细节,实现细节应该依赖于抽象。

开放封闭原则(OCP):

对扩展开放,对更改封闭:类模块应该是可以扩展的但是不能修改的

*尽量增加新的别在原有基础上改,不然就不好维护了*

单一职责原则(SRP):

一个类应该只含有因其他变化的原因,变换的方向隐含着类的责任

*不要含有其他类的变化,只含变化的原因,别写太多责任*

Liskov替换原则(LSP):

子类必须能够替换他的基类(IS-A),继承表达类型抽象

*如果用不了父类不要气急败坏直接throw excpetion*

接口隔离原则(ISP):

不应该强迫客户程序依赖他们不用的方法,接口应该小而完备

*public里面只提供对外函数,子类要用就protected,自己用就priviate*

优先使用对象组合而不是类继承

继承在某种程度上破坏了封装性,子类父类耦合度高,对象组合只需要良好定义的外部接口就行,这就是所谓的复合。

*继承往往暴露的东西太多,但是复合的话更能保证彼此的独立性。*

封装变化点

使用封装创建对象的分界层,让设计者可以在对象的一侧进行修改而不会对另一侧产生不良的影响,从而实现松耦合。

*高层次的封装是封装变化点而不是封装对象和函数*

针对接口编程而不是针对实现编程

不将对象声明为具体的类而是声明为某个接口
客户程序无需知道对象的具体类型只需要知道接口
从而减少系统中的各部分依赖关系,从而实现高聚合,松耦合设计方案

意思跟依赖倒置差不多

3. 23种模式的具体分类

组件协作类

template method
strategy
observer/event

单一职责

decorator
bridger

对象创建

factory method
abstract factory
prototype
builder

性能问题

singleton
flyweight

接口隔离

facade
proxy
mediator
adapter

状态变化

memento
state

数据结构

composite
iterator
chain of resposibility

行为变化

command
visitor

领域问题

interpreter

4.重构关键技法

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

在以后的文章中具体碰到了会提及,其实都是说的一个东西
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无情の学习机器

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值