内容目录
假设有一段代码原本在 Windows 上运行,继承了接口 IDo,但是现在要迁移到 Linux 运行,可是某些地方不兼容,而同事已经将代码写好了,但是没有继承在 Windows 下运行的 IDo 接口,又不能改动以前的代码,必须保证都兼容。
原代码如下:
// 只接受 Ido 的类型
public class MyClass
{
IDo _do;
public MyClass(IDo ido)
{
_do = ido;
}
public void Run()
{
_do.Run();
}
}
public interface IDo
{
void Run();
}
public class Do : IDo
{
public void Run()
{
}
}
这使用适配器吗,模式:
public class TestLinux
{
public void DoWork()
{
}
}
public class Do2 : TestLinux,IDo
{
public void Run()
{
DoWork();
}
}
虽然使用的依然是 IDo 定义的接口,但是实际使用的是 TestLinux 的成员。
又或者旧系统使用了 IOld 这个接口,但是新版本使用了 INew 这个接口,可是又不能修改旧版本的接口。
// 旧接口
public interface IOld
{
void Run();
}
// 新接口
public interface INew
{
void DoWork();
}
// 实现新的接口
public class New : INew
{
public void DoWork()
{
}
}
// 兼容旧的接口
public class Old : New, IOld
{
// 旧接口方法
public void Run()
{
// 新的接口方法
DoWork();
}
}
文章评论