开放封闭原则 --OCP
一、OCP 简介(OCP--Open-Closed Principle):
+,,,-),
.。
软件实体应当对扩展开放,对修改关闭,即软件实体应当在不修改(在-/ 当中可能通过代理
模式来达到这个目的)的前提下扩展。
0)当新需求出现的时候,可以通过扩展现有模型达到目的。
".对已有的二进制代码,如 ,1 等,则不允许做任何修改。
二、OCP 举例:
1
、例子一
假如我们要写一个工资税类,工资税在不同国家有不同计算规则,如果我们不坚持 0",直接
写一个类封装工资税的算税方法,而每个国家对工资税的具体实现细节是不尽相同的!如果我
们允许修改,即把现在系统需要的所有工资税(中国工资税、美国工资税等)都放在一个类里
实现,谁也不能保证未来系统不会被卖到日本,一旦出现新的工资税,而在软件中必须要实现
这种工资税,这个时候我们能做的只有找出这个类文件,在每个方法里加上日本税的实现细节
并重新编译成 !22!虽然在-/34 的运行环境中,我们只要将新的 !22 覆盖到原有的 !22 即可,
并不影响现有程序的正常运行,但每次出现新情况都要找出类文件,添加新的实现细节,这个
类文件不断扩大,以后维护起来就变的越来越困难,也并不满足我们以前说的单一职责原则
(),因为不同国家的工资税变化都会引起对这个类的改变动机!如果我们在设计这个类
的时候坚持了 0" 的话,把工资税的公共方法抽象出来做成一个接口,封闭修改,在客户端
使用该接口的类对象只依赖这个接口来实现对自己所需要的工资税,以后如果系统需要增加
新的工资税,只要扩展一个具体国家的工资税实现我们先前定义的接口,就可以正常使用,而
不必重新修改原有类文件!
2
、例子二
下面这个例子就是既不开放也不封闭的,因为 " 和 都是具体类,如果我要 "
使用不同的一个 类那就要修改 " 类中所有使用 类的地方为新的 类。
"
评论0