橋接模式(bridge結構模式)c#簡單例子
在前面的玩家中每增加一個行為,就必須在每個玩家中都增加,通過橋接模式將行為提取出來了,減少變化
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace adapterpattern { public partial class bridge : Form { public bridge() { InitializeComponent(); } private void btnDisplay_Click(object sender, EventArgs e) { play p1 = new play1(); p1.setPlayAction(new move()); p1.run(); this.listBox1.Items.Add(p1.playstring); play p2 = new play2(); p2.setPlayAction(new jump()); p2.run(); this.listBox1.Items.Add(p2.playstring); } } //意圖(Intent)將抽象部分與實現部分分離,使它們都可以獨立地變化。 public abstract class play//抽象部分 { public string playstring { get; set; } protected playAction pa; public void setPlayAction(playAction pa)//使用組合 { this.pa = pa; } public abstract void action();//抽象部分變化 public void run() { pa.action();//執行實現部分 action(); } } public class play1 : play { public override void action() { playstring = "play1" + pa.actionstring; } } public class play2 : play { public override void action() { playstring = "play2" + pa.actionstring; } } public abstract class playAction//對實現部分進行抽象 { public string actionstring; public abstract void action(); } public class move : playAction//實現玩家移動行為 { public override void action() { actionstring = "move"; } } public class jump : playAction//實現玩家跳躍行為 { public override void action() { actionstring = "jump"; } } }