运用设计模式只是为了解决一类问题的,当解决掉当前一类问题,通常会在解决这个问题时候 带来其他问题 合理应用扬长避短
结构性设计模式:
.net设计模式 (桥接模式)学习笔记
概要: 变化封装,组合复用 。优点 易于扩充。缺点 是 生产环节 变复杂了(多个组合)。使用者需要了解 跟多的细节。
现在 有个业务需求,我们为 三台时候 分别 刷机三种系统, 3*3 就是9中对应的机器和系统,要是用简单 的 集成 会有9中类型文件,在 继续新添加 功能 那将是 乘的 关系。 要是用桥接的方式 就是 加 的关系
/// <summary>
/// 操作系统
/// </summary>
public interface ISyetem
{
string Version();
string OS();
}
class AndroidSystem : ISyetem
{
public string OS()
{
return "Android";
}
public string Version()
{
return "6.0";
}
}
class IOSSystem : ISyetem
{
public string OS()
{
return "IOS";
}
public string Version()
{
return "9.3";
}
}
class WinSystemcs : ISyetem
{
public string OS()
{
return "Winsow";
}
public string Version()
{
return "10.0";
}
}
/// <summary>
/// 手机的基类
/// </summary>
abstract class BasePhone
{
public ISyetem syetem { get; set; }
public abstract void Call();
public abstract void SendMessage();
}
class GalaxyBridge : BasePhone
{
public override void Call()
{
Console.WriteLine(this.syetem.OS());
}
public override void SendMessage()
{
Console.WriteLine(this.syetem.Version());
}
}
.
class IPhoneBridge : BasePhone
{
public override void Call()
{
Console.WriteLine(this.syetem.OS());
}
public override void SendMessage()
{
Console.WriteLine(this.syetem.Version());
}
}
class LumiaBridge : BasePhone
{
public override void Call()
{
Console.WriteLine(this.syetem.OS());
}
public override void SendMessage()
{
Console.WriteLine(this.syetem.Version());
}
}
class Program
{
static void Main(string[] args)
{
ISyetem ssytemAndroid = new AndroidSystem();
ISyetem ssytemIOS = new IOSSystem();
ISyetem ssytemWin = new WinSystemcs();
BasePhone phoneIOS = new IPhoneBridge();
BasePhone phoneAndroid = new GalaxyBridge();
BasePhone phoneWin = new LumiaBridge();
phoneIOS.syetem = ssytemAndroid;
phoneIOS.Call();
phoneIOS.SendMessage();
phoneIOS.syetem = ssytemIOS;
phoneIOS.Call();
phoneIOS.SendMessage();
}
}