动机:组件包含多个复杂的子系统,其客户直接依赖该组件子系统,随着客户程序和各子系统的演化,这种过多的耦合面临着变化的挑战。本模式为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,这个接口使得这一子系统更加容易使用。
场景:ThinkPad由多个复杂的子系统组成:主板、CPU、电源等。这些子系统协同工作,提供给客户具有统一操作接口的ThinkPad。
结构
代码实现
要点:
1、从客户程序的角度看,本模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果——内部子系统的变化不会影响到Facade接口的变化
2、本设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。本模式很多时候更是一种架构设计模式。
3、与其他结构型模式的区别:Facade模式注重简化接口,Adapter模式注重转换接口,Bridge模式注重分离接口(抽象)与其实现,Decorator模式注重稳定接口的前提下为对象扩展功能。
场景:ThinkPad由多个复杂的子系统组成:主板、CPU、电源等。这些子系统协同工作,提供给客户具有统一操作接口的ThinkPad。
结构
代码实现
namespace DesignPattern.Facade
{
internal class Mainboard
{
public void Start()
{
}
public void Operate()
{
}
public void Shutdown()
{
}
}
internal class CPU
{
public void Start()
{
}
public void Operate()
{
}
public void Shutdown()
{
}
}
internal class Power
{
public void Start()
{
}
public void Operate()
{
}
public void Shutdown()
{
}
}
}
{
internal class Mainboard
{
public void Start()
{
}
public void Operate()
{
}
public void Shutdown()
{
}
}
internal class CPU
{
public void Start()
{
}
public void Operate()
{
}
public void Shutdown()
{
}
}
internal class Power
{
public void Start()
{
}
public void Operate()
{
}
public void Shutdown()
{
}
}
}
/*
* 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();
}
}
}
* 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模式注重稳定接口的前提下为对象扩展功能。
欢迎光临我的淘宝http://shop35795100.taobao.com,专营游戏点卡、电话卡及各类充值卡。