C# 外观模式(Facade)
有关外观模式见下面贴子,下面是勇哥编写的一个例子。

FundClass.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace facadeTest1
{
public class StockClass
{
private string _StockName;
public string StockName
{
get { return _StockName; }
set { _StockName = value; }
}
public StockClass(string stockname)
{
_StockName = stockname;
}
public string buy()
{
return string.Format("买入股票: [{0}] !", _StockName);
}
public string sell()
{
return string.Format("股票:[{0}] 卖出了!", _StockName);
}
}
public class NationalDebtClass
{
private string _NationalDebtName;
public string NationalDebtName
{
get { return _NationalDebtName; }
set { _NationalDebtName = value; }
}
public NationalDebtClass(string nationaldebtName)
{
_NationalDebtName = nationaldebtName;
}
public string buy()
{
return string.Format("买入国债: [{0}] !", _NationalDebtName);
}
public string sell()
{
return string.Format("国债: [{0}] 卖出了!", _NationalDebtName);
}
}
public class RealtyClass
{
private string _RealtyName;
public string RealtyName
{
get { return _RealtyName; }
set { _RealtyName = value; }
}
public RealtyClass(string realtryname)
{
_RealtyName = realtryname;
}
public string buy()
{
return string.Format("买入房地产: [{0}] !", _RealtyName);
}
public string sell()
{
return string.Format("产地产: [{0}] 卖出了!", _RealtyName);
}
}
class FundClass
{
public ChangeUI onChange = null;
public string msgInfo;
StockClass stock1;
StockClass stock2;
NationalDebtClass nationalDebt1;
RealtyClass realty1;
public FundClass()
{
stock1 = new StockClass("新旺达新能源科技有限公司");
stock2=new StockClass("爱康电子科技有限公司");
nationalDebt1=new NationalDebtClass("中国人民银行国债");
realty1=new RealtyClass("武汉房地产");
}
public void buy()
{
msgInfo = string.Format(
stock1.buy()+Environment.NewLine+
stock2.buy()+Environment.NewLine+
nationalDebt1.buy()+Environment.NewLine+
realty1.buy()+Environment.NewLine
);
if (onChange != null)
onChange();
}
public void sell()
{
msgInfo = string.Format(
stock1.sell() + Environment.NewLine +
stock2.sell() + Environment.NewLine +
nationalDebt1.sell() + Environment.NewLine +
realty1.sell() + Environment.NewLine
);
if (onChange != null)
onChange();
}
}
}Delegate.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace facadeTest1
{
public delegate void ChangeUI();
}MVcontrol.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace facadeTest1
{
class MVcontrol
{
private FundClass _fclass1;
public MVcontrol(FundClass paramFundClass)
{
_fclass1 = paramFundClass;
}
public void UpdateUI(RichTextBox richControl)
{
richControl.Text = _fclass1.msgInfo;
}
}
}
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 facadeTest1
{
public partial class MainForm : Form
{
FundClass fund;
MVcontrol mvc;
public MainForm()
{
InitializeComponent();
fund = new FundClass();
fund.onChange = onChange;
mvc = new MVcontrol(fund);
btnBuy.Click += new EventHandler(btnBuy_Click);
btnSell.Click += new EventHandler(btnSell_Click);
}
void btnSell_Click(object sender, EventArgs e)
{
fund.sell();
}
void btnBuy_Click(object sender, EventArgs e)
{
fund.buy();
}
public void onChange()
{
mvc.UpdateUI(this.richTextBox1);
}
private void btnSell_Click_1(object sender, EventArgs e)
{
}
}
}本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:



少有人走的路



















