设计模式学习笔记十——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模式注重稳定接口的前提下为对象扩展功能。
场景: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模式注重稳定接口的前提下为对象扩展功能。
相关文章推荐
- 设计模式学习笔记1:对设计模式学习的一点想法兼谈Facade模式
- C#设计模式学习笔记-单例模式
- c++设计模式个人学习笔记
- 二 策略模式——设计模式学习笔记
- 设计模式C++学习笔记之二(Proxy代理模式)
- 设计模式C++学习笔记之十六(Observer观察者模式)
- 四 抽象工厂模式——设计模式学习笔记
- 设计模式学习笔记(十)——Decorator装饰模式
- 设计模式学习笔记(状态模式)
- 设计模式学习笔记(二)——Singleton单件模式
- 设计模式其实很简单学习笔记:设计模式之职责链模式
- 设计模式学习笔记---迭代器模式iterator pattern(Java版)
- 设计模式C++学习笔记之三(Singleton单例模式)
- 设计模式之禅学习笔记--组合模式
- 设计模式C++学习笔记之一(Strategy策略模式)
- 设计模式C++学习笔记之八(Adapter适配器模式)
- 设计模式C++学习笔记之十六(Observer观察者模式)
- 设计模式C++学习笔记之七(AbstractFactory抽象工厂模式)
- 设计模式学习笔记-单例模式
- 初了解JS设计模式,学习笔记