一味对象、继承走不远。用好合成\聚合,能开发出更容易维护的软件。
效果图如下:
代码如下:
class 桥接模式
{
public static void Run()
{
Phone phone;
Soft soft;
phone = new Phone_XiaoMi();
soft = new Soft_Game();
phone.SetSoft(soft);
phone.RunSoft();
soft = new Soft_AddressList();
phone.SetSoft(soft);
phone.RunSoft();
phone = new Phone_Apple();
soft = new Soft_Game();
phone.SetSoft(soft);
phone.RunSoft();
soft = new Soft_AddressList();
phone.SetSoft(soft);
phone.RunSoft();
}
}
internal interface Soft
{
void Run();
}
internal class Soft_Game : Soft
{
public void Run()
{
Console.WriteLine("Run Game.");
}
}
internal class Soft_AddressList : Soft
{
public void Run()
{
Console.WriteLine("Run AddressList.");
}
}
internal abstract class Phone
{
protected Soft _soft;
public void SetSoft(Soft soft)
{
this._soft = soft;
}
public virtual void RunSoft()
{
this._soft.Run();
}
}
internal class Phone_XiaoMi: Phone
{
public override void RunSoft()
{
Console.Write("Phone_XiaoMi:");
this._soft.Run();
}
}
internal class Phone_Apple : Phone
{
public override void RunSoft()
{
Console.Write("Phone_Apple:");
this._soft.Run();
}
}