装饰

1:意图
  在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是要说的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();

4:架构方面的应用
 N层系统:


 例如:Duwamish
 
5:总结
Facade模式注重简化接口与其实现。
Adapter模式注重转换接口。
Bridge模式注重分离接口与实现。
Decorator模式注重稳定接口的前提下为对象扩展功能。
posted @ 2008-02-01 15:58  李占卫  阅读(226)  评论(0编辑  收藏  举报