变异的适配器?


namespace Adapter
{
public class NoteBook
{
public void SetPower(IPower power)
{
if(power.SupplyPower() > 110)
{
throw new Exception("爆炸");
}

Console.WriteLine(
"正常使用");
}
}

public interface IPower
{
UInt32 SupplyPower();
}

public class Power110V : IPower
{
public UInt32 SupplyPower()
{
return 110;
}
}

public class Power220V : IPower
{
public UInt32 SupplyPower()
{
return 220;
}
}

public class PowerAdapter : IPower
{
private IPower _Power;

public PowerAdapter(IPower power)
{
_Power = power;
}

public UInt32 SupplyPower()
{
UInt32 v = _Power.SupplyPower();
if(v != 110)
{
v = 110;
}

return v;
}
}

public static class TestClass
{
public static void Test()
{
NoteBook noteBook = new NoteBook();
Power110V power110V = new Power110V();
Power220V power220V = new Power220V();

IPower power = new PowerAdapter(power110V);

noteBook.SetPower(power);
}
}
}

我的疑问就是在PowerAdapter类的private IPower _Power;上
很多教程,这里的IPower应该是一个具体类
比如:
class Power110VAdapter : IPower
{
private Power220V_Power;
}

或者

class Power220VAdapter : IPower
{
private Power110V_Power;
}

但我们日常笔记本上使用的适配器只有一种,能同时适用110V和220V
所以,我这里使用了IPower接口
这样就能同时适配110V和220V
没问题吧

适配器通常是把接口A转成接口B,你这个例子可能不太恰当
你这里的场景可能理解错了一个东西,笔记本的电源适配器,适配的功能是把交流电转为直流电,而不是转220V到110V
[该贴被kof99于2013-01-25 13:57修改过]

你这个例子感觉更像包装模式。
使你的对象增强了功能,本来只能接110V 输入,包装后可以110V ,220V通吃

适配器就是适配器,楼主不如直接把PowerAdapter类改叫Power110VAdapter形容更为贴切。。
从适配器的角度来看,它绑定哪个ipower无所谓,重要的是它将所绑定的ipower提供的Power转化为110V大小的Power输出了.
[该贴被root于2013-01-25 16:58修改过]