首页 > 代码库 > 开放封闭原则
开放封闭原则
What
开放封闭原则(Open-Closed Principle:OCP),对于扩展是开放的,对于修改是封闭的。软件设计的目标:封装变化、降低耦合,而OCP正是这目标最直接的提现之一。
Why
OCP优点就是不会对已有的代码造成影响,减小测试的范围,以及代码的稳定性。
How
下面不符合OCP的设计,为什么这样说:如果银行业务需要增加其他的功能,比如转账业务,那么我们需要修改BankProcess类,违反了对于修改是封闭的
class BankProcess { //存款 public void Depsite() { Console.WriteLine("存款业务"); } //取款 public void Withdraw() { Console.WriteLine("存款业务"); } }
那么我们怎来设计才能符合OCP原则呢?将业务功能抽象为接口,当业务依赖固定的抽象时,对修改那就是封闭的,而通过继承和多态 ,从抽象体中扩展出新的实现,就是对扩展的开放
interface IBankProcess { void Process(); }
存款业务实现
class DepsiteProcess : IBankProcess { public void Process() { Console.WriteLine("存款"); } }
取款业务实现
class WithdrawProcess : IBankProcess { public void Process() { Console.WriteLine("取款"); } }
对于转账业务,我们进行扩展,这里我们就不要去修改原来已经有的代码了,只需要扩展一个新的业务类就可以了
class Transfer : IBankProcess { public void Process() { Console.WriteLine("转账"); } }
抽象是有好处的,但是把握好抽象的度也是很重要的,拒绝滥用抽象,只讲经常变化的部分抽象。
开放封闭原则
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。