.NET乐园
一个梦想,一个行动…… (欢迎光临我的淘宝http://pipis.taobao.com,专营户外手电筒、头灯、营地灯、自行车灯)
动机:组件包含多个复杂的子系统,其客户直接依赖该组件子系统,随着客户程序和各子系统的演化,这种过多的耦合面临着变化的挑战。本模式为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,这个接口使得这一子系统更加容易使用。

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

结构
Facade模式结构图


代码实现

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()
        
{
        }

    }

}

/*
 * 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模式注重稳定接口的前提下为对象扩展功能。
posted on 2007-06-12 16:20  Charly  阅读(535)  评论(0编辑  收藏  举报