zoukankan      html  css  js  c++  java
  • Facade模式

    更加easy使用。外观模式是一种使用频率很高的模式。通过引入外观角色简化了client与子系统之间的交互,通过一个统一的接口来使用子系统复杂的调用,减少了子系统和client的耦合。

    通过现实生活中的一个样例来说明这个问题。我们大学生非常多人都有去电脑城装机的经历。假设我们自己去装机,须要分别购买CPU,内存。硬盘,显示器,机箱和键鼠等配件。整个过程非常麻烦,并且须要了解各种配件的细节以及组装方法。

    我们也可能去找电脑城专门帮别人装机的人,他们富有经验。了解各个配件的的细节和组装方法,我们仅仅须要付给他们一些些money就能够省去非常多麻烦。。在这个样例中,这个装机的人就是外观角色,提供给我们一个简洁的接口。自己去处理子配件中各种复杂的事物。

    外观模式是迪米特法则的直观应用。模块相互直接应当遵循最少知道原则,低耦合的关系可以减少系统的复杂度,简化client和子系统之间的关系。

    外观模式的UML图:


    相应的C++实现:

    class Package1
    	{
    	public:
    		void method1()
    		{
    			cout << "method1" << endl;
    		}
    	};
    	class Package2
    	{
    	public:
    		void method2()
    		{
    			cout << "method2" << endl;
    		}
    	};
    	class Package3
    	{
    	public:
    		void method3()
    		{
    			cout << "method3" << endl;
    		}
    	};
    
    	class Facade
    	{
    	public:
    		void doSomething()
    		{
    			p1->method1();
    			p2->method2();
    			p3->method3();
    		}
    		Facade()
    		{
    			p1 = new Package1();
    			p2 = new Package2();
    			p3 = new Package3();
    		}
    		~Facade()
    		{
    			delete p1;
    			delete p2;
    			delete p3;
    		}
    	private:
    		Package1 *p1;
    		Package2 *p2;
    		Package3 *p3;
    	};
    	
    	void test()
    	{
    		Facade *facade = new Facade();
    		facade->doSomething();
    		delete facade;
    	}

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    python redis操作
    subprocess模块的使用
    tcpcopy 流量复制工具
    Python名称空间与闭包
    python 偏函数
    Python面向对象的特点
    vsftpd 安装及使用虚拟用户配置
    shell 并发脚本
    Centos7 搭建LVS DR模式 + Keepalive + NFS
    python pip 升级
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4640922.html
Copyright © 2011-2022 走看看