java——面向对象的开放/封闭原则OCP

本文详细阐述了OCP(开闭原则)在软件设计中的实践,通过抽象接口和继承机制,如何避免硬编码功能并支持新功能的添加。通过银行员工操作类例,讲解了如何遵循OCP,维护代码灵活性,以应对未来可能的loan功能需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OCP中的开放指的是对扩展性的开放,封闭指的是对修改的封闭。

实现OCP的一个重中之重就是:使用抽象接口,而非面向实例编程,从所有Server类中抽象出一个共同的AbstractServer类,它包含对所有Server类都共用的代码,当需要创建新的Server类型时,只需要从AbstractServer继承派生出具体子类。

这样做的好处是:在以后要新增功能的时候,不用修改原先类内部的代码,只需从抽象接口/抽象类派生出新的具体的子类。

举个例子:

一个银行的员工支持如下行为:Save()、Draw()、Transfer()。

违反OCP原则的做法是:设计一个BankWorker,内部有Save()、Draw()、Transfer()三种操作。如此一来,当我们需要新增一个功能:loan()的时候,就必须修改原先的BankWorker类。

而符合OCP原则的做法是:设计一个抽象接口BankWorker,它内部只有一个抽象操作:

operation()

描述员工的三种行为的时候,就根据接口实现三种实例SaveBankWorker、DrawBankWorker、TransferBankWorker,内部分别对operation()进行重写。当新出现功能loan()时,就只要添加一个新的实例LoanBankWorker即可,并不需要对原先的代码做出复杂繁琐的修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值