我正在研究设计模式,目前我正在研究原型(prototype)模式。这个模式让我想知道,为什么我需要这个模式的接口(interface),没有接口(interface)我不能实现相同的功能吗?
我已经创建了两个例子,谁能解释一下为什么我需要这个接口(interface)?
接口(interface)示例:
这是我的接口(interface)类:
interface IWeapon
{
IWeapon Clone();
}
我的具体类:
class Rifle : IWeapon
{
public IWeapon Clone()
{
return (IWeapon)this.MemberwiseClone();
}
}
克隆过程
//Create rifle
Rifle rifle = new Rifle();
rifle.Name = "M4A1";
rifle.Rounds = 30;
//Copy Rifle
Rifle rifleCopy = (Rifle)rifle.Clone();
这就是我在没有界面的情况下克隆的方式
public Rifle Clone()
{
return (Rifle)this.MemberwiseClone();
}
谁能给我解释一下使用带有接口(interface)的实现相对于没有接口(interface)的实现的优势?
最佳答案
当你有做同样事情但使用不同方法来实现它的类时,接口(interface)是很棒的。
使用你的例子,假设我们有这样的东西......
public interface ILongRangeWeapon
{
void Fire();
}
现在,假设您有这些类...
public class Rifle : ILongRangeWeapon
{
public void Fire()
{
// Pull the trigger
}
}
public class NuclearMissile : ILongRangeWeapon
{
public void Fire()
{
// Press the red button
}
}
现在您可以在您的代码中使用 ILongRangeWeapon,它使用哪种机制来开火并不重要,它只知道它可以开火。
更实际的应用是连接到互联网。有多种连接方式,调制解调器、局域网、wifi 等。但是,您根本不关心实例如何连接,您只需要它连接即可。
有些纯粹主义者说你应该让一切都成为界面。我认为它只是为了增加复杂性而在不需要的地方增加了复杂性。作为开发人员,您可以决定是否应该使用接口(interface)。
关于c# - 原型(prototype)模式,为什么需要接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21316316/