接口A
interface IBakeBread { string BreadType { get; set; } void BakeBread(); }
接口A的实现
using System; class BakeBread : IBakeBread { private string _BreadType; public BakeBread(string breadtype) { _BreadType = breadtype; } #region IBakeBread 成员 public string BreadType { get { return _BreadType; } set { _BreadType = value; } } void IBakeBread.BakeBread() { Console.WriteLine(_BreadType + " is baking now,please wait some minutes."); } #endregion }
接口B
interface IGetUpTimer { string GetUpTime { get; set; } void Awork(); }
接口B的实现
using System; class GetUpTimer : IGetUpTimer { private string _GetUpTime; public GetUpTimer(string getuptime) { _GetUpTime = getuptime; } #region IGetUpTimer 成员 public string GetUpTime { get { return _GetUpTime; } set { _GetUpTime=value; } } public void Awork() { Console.WriteLine("It's " + _GetUpTime + " you must get up!"); } #endregion }
接口C
interface IReceiveRadio { string RadioStation { get; set; } void ReceiveRadio(); }
接口C的实现
using System; class ReceiveRadio : IReceiveRadio { private string _RadioStation; public ReceiveRadio(string radiostation) { _RadioStation = radiostation; } #region IReceiveRadio 成员 public string RadioStation { get { return _RadioStation; } set { _RadioStation = value; } } void IReceiveRadio.ReceiveRadio() { Console.WriteLine("The Radio is receiving the " + _RadioStation + " now."); } #endregion }
接口整理者(将复杂宽接口转变成简单的窄接口)
using System; class AutoMorningPerpare { private IGetUpTimer _GetUpTimer; private IBakeBread _BakeBread; private IReceiveRadio _ReceiveRadio; public AutoMorningPerpare(IGetUpTimer getuptimer, IBakeBread bakebread, IReceiveRadio receiveradio) { _GetUpTimer = getuptimer; _BakeBread = bakebread; _ReceiveRadio = receiveradio; } public void ExecutePlan() { _GetUpTimer.Awork(); _BakeBread.BakeBread(); _ReceiveRadio.ReceiveRadio(); } }
调用代码
using System; using System.Collections.Generic; using System.Text; namespace FacadePattern { class Program { static void Main(string[] args) { IGetUpTimer getuptimer = new GetUpTimer("6:30"); IBakeBread bakebread = new BakeBread("black bread"); IReceiveRadio receiveradio = new ReceiveRadio("CCTV Station"); AutoMorningPerpare amp = new AutoMorningPerpare(getuptimer, bakebread, receiveradio); amp.ExecutePlan(); Console.ReadKey(); } } }
执行结果:
It's 6:30 you must get up!
black bread is baking now,please wait some minutes.
The Radio is receiving the CCTV Station now.
本文介绍了一个使用外观模式简化多个接口调用的例子。通过创建一个统一的接口,即AutoMorningPerpare类,来协调三个不同的接口:IGetUpTimer、IBakeBread和IReceiveRadio。这样做的目的是降低客户端代码的复杂度,使其不需要直接与每个单独的服务交互。
2599

被折叠的 条评论
为什么被折叠?



