设计模式学习记录

设计模式学习代码仓库如下:

https://gitee.com/csqs/design-pattern-learning

设计模式学习笔记

面向对象基本设计原则

依赖倒置原则(DIP)

高层模块不应该依赖于底层模块,两者都应该依赖于抽象

如: 界面展示不应该依赖于内部实现类,应该依赖于整体抽象的抽象类

抽象不应该依赖于实现细节,实现细节应该依赖于抽象

抽象依赖于实现细节就会稳定容易出问题,拿出稳定部分抽象出来,总之要实现隔离变化。

总的来说,底层模块的变更会直接影响到高层模块,如果每次改动的底层模块会让高层模块直接变的不稳定,这样使得整体不稳定,所以来说需要尽量 的隔离变化,让高层模块不依赖于底层模块,这样复用高层模块的时候很简单也可以被复用。

简单的说是这样的首先细节应该分离出来,找到中间的稳定部分制作抽象类,然后来实现各自操作,抽象类需要尽量稳定不修改,也就是让实现细节依赖抽象类(稳定)

开发封闭原则(OCP)

对扩展开放,对更改封闭

类模块应该是可扩展的,但是不可修改的。

即程序具有一定的扩展性能允许扩展操作,大多数的方法还是 使用抽象类,不同的操作方式通过重载抽象类实现,这样实现了扩展性。总的来说抽象类需要设计的足够稳定,如果抽象类需要频繁的修改,整体也会变得不稳定。

单一职责原则(SRP)

一个类应该仅有一个引起它变化的原因

变化的方向隐含类的责任

Liskov替换原则

子类必须要能够替换他们的基类,即父类所有方法子类都能正常使用

 也就是说子类继承父类 应该是在父类的职责上扩展 而不是实现新的功能,也就是父类的接口在子类中都是有用的。

接口隔离原则

不应该强迫客户程序依赖他们不用的方法,除非是可以给外部使用的接口,其他接口尽量不要暴露出去,

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

能使用类里面包含另一个类的方式,就不要使用继承,因为继承从某种程度破坏了封装, 继承的权限相对直接包含 成员的权限不一样

通过组合的方式能更加的减少重复,提高复用性 比如装饰模式,通过提供基类指针 然后继承基类的方式 然后让内部的基类指针指向实现类实现最原始基类额外操作的方式来实现提高复用性。

封装变化点

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

(暂未理解)

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

不将变量类型声明为某个特定的具体类,而是声明为某个接口。

客户程序不需要知道对象的具体类型,只需要知道对象所具有的接口。

实际上还是将功能抽象使用基类的接口,子类实现这样就实现通用性,且使用的地方无需关注实现方式。实现了高聚合,低耦合。

详细:

https://gitee.com/csqs/design-pattern-learning

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值