您的位置:首页 > 其它

设计模式学习笔记十——Facade模式

2007-06-12 16:20 344 查看
动机:组件包含多个复杂的子系统,其客户直接依赖该组件子系统,随着客户程序和各子系统的演化,这种过多的耦合面临着变化的挑战。本模式为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,这个接口使得这一子系统更加容易使用。

场景:ThinkPad由多个复杂的子系统组成:主板、CPU、电源等。这些子系统协同工作,提供给客户具有统一操作接口的ThinkPad。

结构
namespace DesignPattern.Facade
namespace DesignPattern.Facade
{
public class ThinkPadFacade
{
Mainboard mainboard = new Mainboard();
CPU cpu1 = new CPU();
CPU cpu2 = new CPU();
Power power = new Power();

public void Start()
{
power.Start();
mainboard.Start();
cpu1.Start();
cpu2.Start();
}

public void Operate()
{
cpu1.Operate();
cpu2.Operate();
}

public void Shutdown()
{
cpu1.Shutdown();
cpu2.Shutdown();
mainboard.Shutdown();
power.Shutdown();
}
}
}

要点
1、从客户程序的角度看,本模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果——内部子系统的变化不会影响到Facade接口的变化
2、本设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。本模式很多时候更是一种架构设计模式。
3、与其他结构型模式的区别:Facade模式注重简化接口,Adapter模式注重转换接口,Bridge模式注重分离接口(抽象)与其实现,Decorator模式注重稳定接口的前提下为对象扩展功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: