C# 设计模式(8)桥接模式
桥接模式
1.解决多维度问题
2.变化封装
代码实现:
组合 变化封装类 减少子类的数量
手机系统桥接
namespace BridgePattern.Bridge
{
public interface ISystem
{
public string GetSystem();
public string GetVersion();
}
class IOS:ISystem
{
public string GetSystem()
{
return "IOS";
}
public string GetVersion()
{
return "14.1";
}
}
public class SmartisanOS:ISystem
{
public string GetSystem()
{
return "Smartisan_OS";
}
public string GetVersion()
{
return "7.0";
}
}
}
手机品牌:
namespace BridgePattern
{
public abstract class BasePhone
{
public ISystem PhoneSystem;
public abstract void UseCall();
public abstract void UseText();
}
public class Iphone:BasePhone
{
public override void UseCall()
{
Console.WriteLine($"Use {this.GetType().Name} {this.PhoneSystem.GetSystem()} {this.PhoneSystem.GetVersion()} Call Somebody");
}
public override void UseText()
{
Console.WriteLine($"Use {this.GetType().Name} {this.PhoneSystem.GetSystem()} {this.PhoneSystem.GetVersion()} Send Text to Somebody");
}
}
public class Smartisan:BasePhone
{
public override void UseCall()
{
Console.WriteLine($"Use {this.GetType().Name} {this.PhoneSystem.GetSystem()} {this.PhoneSystem.GetVersion()} Call Somebody");
}
public override void UseText()
{
Console.WriteLine($"Use {this.GetType().Name} {this.PhoneSystem.GetSystem()} {this.PhoneSystem.GetVersion()} Send Text to Somebody");
}
}
}
代码调用:
class Program
{
static void Main(string[] args)
{
ISystem iOS = new IOS();
ISystem smartisanOS = new SmartisanOS();
BasePhone iPhone = new Iphone();
iPhone.PhoneSystem = iOS;
iPhone.UseCall();
iPhone.UseText();
BasePhone smartisan = new Smartisan();
smartisan.PhoneSystem = smartisanOS;
smartisan.UseCall();
smartisan.UseText();
BasePhone iPhoneSmartisanOS = new Iphone();
iPhoneSmartisanOS.PhoneSystem = smartisanOS;
iPhoneSmartisanOS.UseCall();
iPhoneSmartisanOS.UseText();
BasePhone smartisanIOS = new Smartisan();
smartisanIOS.PhoneSystem = iOS;
smartisanIOS.UseCall();
smartisanIOS.UseText();
}
}
结果:


浙公网安备 33010602011771号