Bridge mode (bridge structure mode) C # simple Example
Each additional action in the previous player must be added to each player, and the behavior is extracted by bridging mode to reduce the change
?
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 66676869707172737475767778798081 |
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"
;
}
}
}
|
C # Bridging mode (bridge fabric mode)