zoukankan      html  css  js  c++  java
  • 设计模式之外观模式(Facade)

    外观模式应该是程序员最下意识用的一种模式,比如我们习惯性的对复杂系统做一个封装接口。外观模式其本质是对一堆复杂对象和应用的接口抽象,对它们进行封装隔离,对于调用者来说只需要关系接口的实现,而不需要知道内部有哪些对象和调用。

    作用

    为模块的一组接口提供一致的界面,定义了一个高层接口,这个接口使得这一模块更加容易使用。

    类视图

    实现

    //复杂或多对象
    class objectOne
    {
    	public void operator() 
    	{
    		cout<<"operator one
    ";
    	}
    }
    class objectTwo
    {
    	public void operator() 
    	{
    		cout<<"operator two
    ";
    	}
    }
    class objectThree
    {
    	public void operator() 
    	{
    		cout<<"operator three
    ";
    	}
    }
    class objectFour
    {
    	public void operator() 
    	{
    		cout<<"operator four
    ";
    	}
    }
    //外观实现
    class Facade
    {
    	objectOne one;
    	objectTwo two;
    	objectThree three;
    	objectFour four;
    
    	public Facade() 
    	{
    		obj1 = new objectOne();
    		obj2 = new objectTwo();
    		obj3 = new objectThree();
    		obj4 = new objectFour();
    	}
    	public void MethodA() 
    	{
    		cout<<" Fun A()-----
    ");
    		obj1.operator();
    		obj2.operator();
    		obj3.operator();
    		obj4.operator();
    	}
    	public void MethodB() 
    	{
    		cout<<" Fun B()-----
    ");
    		obj4.operator();
    		obj3.operator();
    		obj2.operator();
    		obj1.operator();
    	}
    }
    //调用
    void main() 
    {
    	Facade facade = new Facade();
    	facade.MethodA();
    	facade.MethodB();
    }
    

    应用场景

    1. 构建上下层次的模块时,如果上下进行调用,则会出现强耦合,用外观模式实现上下级模块的接口,简化相互调用的交叉,降低上下层的耦合度;
    2. 在多个复杂模块相互协作工作时,向上用外观类提炼出高层接口,对外隐藏其内部的实现并隔离变化;
    3. 对单独模块或者对复杂模块的封装,提炼出外观类进行封装访问,解耦合。
  • 相关阅读:
    vscode .vue文件中不能提示html代码
    vscode不能提示已经定义的类名和id?
    vue常用指令
    移动端性能陷阱和硬件加速
    关于样式的获取问题
    “'npm' 不是内部或外部命令,也不是可运行的程序”
    JavaScript之闭包问题
    Sublime Text 套件介紹:Pretty JSON
    教你解决Sublime Text中文乱码问题
    C# 连接Mysql 字符串
  • 原文地址:https://www.cnblogs.com/chencarl/p/8657313.html
Copyright © 2011-2022 走看看