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
没问题吧