Java关闭了 如何才能打开_打开/关闭原则 - 如何调用新版本?

我正在尝试掌握开放/封闭原则(在我的情况下是PHP,但这并没有真正有所作为) .

我理解它的方式是一个类是 never 打开进行修改 . 仅用于修复错误 . 如果我想在类中添加新代码,那么我可以向其中添加新代码的唯一方法是'd have to create a new one and extend the ' old ' class. That' .

在某种程度上,我可以看到这种优势 . 因为基本上你创建了某种版本控制系统,旧代码总是可以工作,但你总是可以尝试使用新类 .

但这在实践中如何运作?我的意思是,假设我有以下课程:

class MyObject

{

public function doSomething()

{

echo 'Im doing something';

}

}

所以我可能在某个地方实例化这个类:

$obj = new MyObject();

但后来我决定在该对象中使用另一种方法是件好事 . 所以我也可以做其他事情 . 根据OCP,我无法修改课程 . 所以我必须创建一个新的,延伸到旧的一个吧?

第一个问题 . 我怎么称呼新课程?因为它实际上不是一个完整的新对象 . 喜欢 . User对象是User对象 . 我不能突然给它完全不同的名称,因为它需要另一种方法 . 无论如何,我创建了新类:

class MyNewObject extends MyObject

{

public function doSomethingElse()

{

echo 'Im doing something else now';

}

}

现在这也意味着我必须更改我实例化“MyObject”类的代码行,并将其替换为“MyNewObject”类,对吧..?如果在不止一个地方完成,那么我必须搜索我的源代码...(想想控制器类中的方法,它几乎总是使用'new'关键字来实例化某些类) .

这基本上适用于继承 . 我必须找到继承旧类的每个类,并且必须用新类替换它 .

基本上我的问题是:

你如何命名具有新方法的新类?只是因为我添加了一些新功能,并不意味着我可以给全班一个全新的名字......

如果“旧”类从多个地方实例化(或继承),该怎么办?然后我必须找到所有这些地方......收益在哪里?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值