【发布时间】:2015-03-24 16:13:04
【问题描述】:
假设我有一个类似的界面
interface IMessage
{
void DoSomething();
void DoAnother();
}
假设在一个大项目中,有 100 个类实现了这个接口。但是如果我向 IMessage 接口添加一个新方法,比如 Foo();
interface IMessage
{
void DoSomething();
void DoAnother();
void Foo();
}
所以我的其他 100 个实现此接口的类必须更改。
那么这里有什么问题吗?改变所有班级?我听说 Open Close prensible 所以我使用了接口,但在那种情况下,逻辑是什么?
【问题讨论】:
-
完全不清楚你在问什么。是的,如果给接口添加方法,则需要给所有实现该接口的类添加实现。
-
如果你以后有添加新方法的场景,你应该考虑改用抽象类,这样你就不需要每次都改变所有的类。
-
也许创建一个 IExtendedMessage 接口,它本身扩展了 IMessage。将您的 Foo 方法添加到 IExtendedMessage 接口,任何使用 IMessage 的代码都应该没问题。
-
如果你编写了 100 个类都实现了 IMessage,然后你决定 IMessage 需要另一种方法,你要么是一个快速打字机,要么你的 100 个类不需要 foo() 方法跨度>
标签: java c# design-patterns