设计模式学习笔记之 Adapter
Adapter模式是一种结构型模式,它的作用在于转换类的接口,使一些不兼容的类可以相互兼容工作。这种结构在我们平时的工作经常会被用到,是一种应用很普遍的模式。
用我们身边的例子来说打比方,就好像一个三向插头不能插到双向的插座里一样,而Adapter就相当于有三向插头的接线板。
现在用户需要的接口是
interface IElec
{
public object 火线();
public object 地线();
public object 零线();
}
而我们的电源类是这样的
class ElecSource
{
private object 火线;
private object 零线;
public object Get火线
{
get
{
return 火线;
}
}
public object Get零线
{
get
{
return 零线;
}
}
//初始化工作略
}

为了能让他们可以兼容工作,我们写Adapter如下:
class Adapter : IElec
{
ElecSource elecSource = new ElecSource();
public object 火线()
{
return elecSource.Get火线;
}
public object Get零线()
{
return elecSource.零线;
}
public object 地线()
{
return Getobject(); //瞎编的
.
}
}

这种Adapter称为对象适配器,使用对象的组合来达到适配的目的。上面例子中Adapter类中就包含了elecSource对象。除此之外,还有一种类适配器,结构如下:
class Adapter:ElecSource,IElec
{
public object 火线()
{
return this.Get火线;
}
public object 地线()
{
return Getobject();
}
public object 零线()
{
return this.Get零线;
}
}

这里适配器继承了ElecSource类和IElec接口,不需要在Adapter中创建ElecSource对象。但是这样做使得Adapter继承了ElecSource的全部公有的方法和属性,使得他们的功能相重复了,违反了类的单一职责的原则。而且在复杂情况下,例如在适配器中需要同时使用两个以上的适配对象时,因为C#不支持多继承,就难以实现类适配器了。
参考: MSDNWebCast C#设计模式纵横谈 李建忠
回到目录

浙公网安备 33010602011771号