所谓外观类就是提供一个中间类(外观类),来降低客户和子系统的耦合,如果需求有变,换一个外观类就好了,接口不变。
举一个基金的例子,子系统是投资股票和银行...
using System;
public class YinHang {
public int GetInCome(int money)
{
Random r = new Random();
int income = money * r.Next(-10,100) / 1000;
return income;
}
}using System;
public class GuPiao {
public int GetIncome(int money)
{
Random r = new Random();
int income = money * r.Next(-10, 10) / 100;
return income;
}
}基金公司外观类
public class JiJinCompany {
//将子系统整合起来
private YinHang mYingHang;
private GuPiao mGuPiao;
private int mMoney;
public JiJinCompany(int money)
{
mYingHang = new YinHang();
mGuPiao = new GuPiao() ;
mMoney = money;
}
//提供接口对外处理
public int GetIncome()
{
int income = 0;
income += mYingHang.GetInCome(mMoney);
income += mGuPiao.GetIncome(mMoney);
mMoney += income;
return income;
}
}现在有了基金公司这个外观类,你只需要给钱它,它就会自动帮你去投资银行和股票,但是你不知道是怎么投资的。(迪米特法则)
如果是你自己去投资,你去要去银行,又要去股市,而有了外观类(基金公司),就只需要知道基金公司就行了。(外观模式使用示例)