面向对象设计原则与模式摘录

摘录自《敏捷软件开发:原则、模式与实践》。为了节省篇幅所以可能说得比较简略难懂
后面还有一些没看完,待续

SRP 单一职责:对一个类只有一个能引起它变化的原因
OCP 开放-封闭原则:软件实体应该可扩展,但是不可修改(利用接口、模板实现)
LSP liskov替换原则:子类型必须能替换父类
DIP 依赖倒置:细节依赖抽象,抽象不依赖细节。即应优先依赖抽象类(例如java的interface),而非具体实现的class。
ISP 接口隔离:不应强迫客户依赖他们不需要的方法。
REP 重用发布等价:重用粒度就是发布粒度
CCP 共同封闭:一个变化对一个包产生影响,则将使包中所有类收影响
CRP 共同重用:重用包的一个类就应该导致所有类共同重用
ADP 无环依赖:包的依赖关系图不存在环
SDP 稳定依赖:朝稳定的方向进行依赖,即一个容易改变的包不可以被不容易改变的包依赖
SAP 稳定抽象:抽象程度应与稳定度一致

设计模式:
Command:用类封装行为,并继承接口Command,包含了do/undo方法
Active Object:配合Command使用,用addCommand注入行为,run方法执行注入的行为

Template Method:定义几个要子类重写的方法,然后定义一个run方法来指出如何执行那些被重写的方法。
Strategy:类似依赖注入(IoC)。首先定义Runner类,并定义行为接口。然后实现各种具体行为类,将其注入到Runner类。
相比Template Method,Strategy将具体实现分离,更利于重用。

FACADE:直接将大量复杂的类封装到一个简单的接口中,并约定你的程序的其他代码必须要通过FACADE类访问那些被封装的类。
Mediator:定义几个类之间的关系,这种关系必须是自动完成的,也就是那几个类的方法调用必须会令Mediator响应(可以通过事件、listener实现)。一旦Mediator类创建之后用户就无需理会它的存在,而继续直接使用Mediator控制的几个类,Mediator会在后台自动完成其工作。

Singleton:最简单的模式,通过一些限制令一个类在程序中的实例是唯一的。
Monostate:方法是非静态的,而成员变量是静态的。如此依赖这个类可以有多个实例,但事实上都是指向同一个实例。

NullObject:通常方法出错我们会在返回一个null,但是这样导致客户代码必须要检查null。我们可以定义一种继承自正常返回类型的NullObject,它的所有方法都返回null,这样可以减少一些检查代码。

Factory:定义一个Factory接口,里面有各种create方法用来构建各种对象。然后实现Factory,在里头决定每个create方法到底返回什么对象。这是一个十分常用的符合DIP原则的模式。Composite:将多种继承自同一接口的class组合的模式。首先可以跟这些class继承同一接口,然后增加一个add方法,用于注入这些class的实例,并决定在Composite类中如何组合这些实例。

Observer

Abstract Server
Adapter
Bridge

Proxy
Stairway to Heaven

Visitor

State:用于实现有限状态机(FSM)的模式。事件和动作将分到State和Context两个类中。State类每个事件方法定义发生哪些动作,Context类定义动作具体的实现,并且Context注入到State的事件。
State模式可以用于GUI的控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值