装饰
1:意图
在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是要说的Façade 模式。(外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式)
2:类图
3:代码
4:架构方面的应用
N层系统:
例如:Duwamish
5:总结
Facade模式注重简化接口与其实现。
Adapter模式注重转换接口。
Bridge模式注重分离接口与实现。
Decorator模式注重稳定接口的前提下为对象扩展功能。
在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是要说的Façade 模式。(外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式)
2:类图
3:代码
/// <summary>
/// 声音子系统
/// </summary>
public class SoundSystem
{
public void SoundOn()
{ }
public void SoundOff()
{ }
}
/// <summary>
/// 光电子系统
/// </summary>
public class LightSystem
{
public void LightOn()
{ }
public void LightOff()
{ }
}
/// <summary>
/// 警报系统门面
/// </summary>
public class AlarmFacade
{
private SoundSystem sound = new SoundSystem();
private LightSystem light = new LightSystem();
public void TurnOnAlarm()
{
sound.SoundOn();
light.LightOn();
}
public void TurnOffAlarm()
{
sound.SoundOff();
light.LightOff();
}
}
//调用
Bll.Facade.AlarmFacade alarm = new Bll.Facade.AlarmFacade();
alarm.TurnOnAlarm();
alarm.TurnOffAlarm();
/// 声音子系统
/// </summary>
public class SoundSystem
{
public void SoundOn()
{ }
public void SoundOff()
{ }
}
/// <summary>
/// 光电子系统
/// </summary>
public class LightSystem
{
public void LightOn()
{ }
public void LightOff()
{ }
}
/// <summary>
/// 警报系统门面
/// </summary>
public class AlarmFacade
{
private SoundSystem sound = new SoundSystem();
private LightSystem light = new LightSystem();
public void TurnOnAlarm()
{
sound.SoundOn();
light.LightOn();
}
public void TurnOffAlarm()
{
sound.SoundOff();
light.LightOff();
}
}
//调用
Bll.Facade.AlarmFacade alarm = new Bll.Facade.AlarmFacade();
alarm.TurnOnAlarm();
alarm.TurnOffAlarm();
4:架构方面的应用
N层系统:
例如:Duwamish
5:总结
Facade模式注重简化接口与其实现。
Adapter模式注重转换接口。
Bridge模式注重分离接口与实现。
Decorator模式注重稳定接口的前提下为对象扩展功能。