{
Console.Write("大体恤");
base.Show();
}
}
class Sneakers2 : Finery2
{
public override void Show()
{
Console.Write("大裤衩");
base.Show();
}
}
class BigTrouser2 : Finery2
{
public override void Show()
{
Console.Write("垮裤");
base.Show();
}
}
class LeatherShoes2 : Finery2
{
public override void Show()
{
Console.Write("西装");
base.Show();
}
}
class Tie2 : Finery2
{
public override void Show()
{
Console.Write("领带");
base.Show();
}
}
class Suit2 : Finery2
{
public override void Show()
{
Console.Write("皮鞋");
base.Show();
}
}
}
8. 桥接模式
将抽象部分与它的实现部分分离,使它们都可以独立地变换。核心意图就是将这些实现独立出来,让他们各自变化,使得每种变化不会影响其他的变化,从而达到应对变化的目的(就adidas和NIKE两个品牌与服装之间桥接起来)
UML图:

代码:
view plaincopy to clipboardprint //桥接模式——将抽象部分(手机品牌)和实现部分(手机软件)分离开使他们可以独立的变化
namespace 桥接模式
{
class Class2
{
static void Main(string[] args)
{
HandsetBrand1 ab;
ab = new HandsetBrandN1();
ab.SetHandsetSoft(new HandsetGame1());
ab.Run();
ab.SetHandsetSoft(new HandsetAddressList());
ab.Run();
ab = new HandsetBrandM1();
ab.SetHandsetSoft(new HandsetGame1());
ab.Run();
ab.SetHandsetSoft(new HandsetAddressList());
ab.Run();
Console.Read();
}
}
abstract class HandsetSoft //手机软件
{
public abstract void Run();
}
class HandsetGame1 : HandsetSoft //手机游戏
{
public override void Run()
{
Console.WriteLine("运行手机游戏");
}
}
class HandsetAddressList : HandsetSoft //手机通讯录
{
public override void Run()
{
Console.WriteLine("运行手机通讯录");
}
}
abstract class HandsetBrand1 //手机品牌
{
protected HandsetSoft soft;
//设置手机软件
public void SetHandsetSoft(HandsetSoft soft)
{
this.soft = soft;
}
//运行
public abstract void Run();
}
class HandsetBrandN1 : HandsetBrand1 //手机品牌N
{
public override void Run()
{
soft.Run();
}
}
class HandsetBrandM1 : HandsetBrand1 //手机品牌M
{
public override void Run()
{
soft.Run();
}
}
//新增一个手机MP3播放器软件
class HandsetMP3 : HandsetSoft
{
public override void Run()
{
Console.WriteLine("运行手机MP3播放器");
}
}
//新增手机品牌S
class HandsetBrandS : HandsetBrand1
{
public override void Run()
{
soft.Run();
}
}
}
//桥接模式——将抽象部分(手机品牌)和实现部分(手机软件)分离开使他们可以独立的变化
namespace 桥接模式
{
class Class2
{
static void Main(string[] args)
{
HandsetBrand1 ab;
ab = new HandsetBrandN1();
ab.SetHandsetSoft(new HandsetGame1());
ab.Run();
ab.SetHandsetSoft(new HandsetAddressList());
ab.Run();
ab = new