17.外观模式

来源:互联网 发布:矩阵制组织形式举例 编辑:程序博客网 时间:2024/06/06 04:32


1外观模式的核心内容是:

A:多个子系统的类

B:通过一个统一的门面进行管理

2外观模式的作用:让各各子类的运行由一个类统一进行管理。

3外观模式具体描述

门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。

门面模式提供一个高层次的接口,使得子系统更易于使用。

每一个子系统只有一个门面类,而且此门面类只有一个实例,

也就是说它是一个单例模式。但整个系统可以有多个门面类。

 

我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,

这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。

幸好相机有Facade设计模式,把相机调整到自动档,

只要对准目标按快门就行了,一切由相机自动调整,

这样MM也可以用这个相机给我拍张照片了。

4外观模式类图

5.代码:

#include<iostream>

#include<string>

usingnamespacestd;

//门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。

//门面模式提供一个高层次的接口,使得子系统更易于使用。

//每一个子系统只有一个门面类,而且此门面类只有一个实例,

//也就是说它是一个单例模式。但整个系统可以有多个门面类。

 

//我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,

//这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。

//幸好相机有Facade设计模式,把相机调整到自动档,

//只要对准目标按快门就行了,一切由相机自动调整,

//这样MM也可以用这个相机给我拍张照片了。

classSub1

{

public:

   voidf1()

   {

       cout <<"子系统的方法 1" << endl;

   }

};

 

classSub2

{

public:

   voidf2()

   {

       cout <<"子系统的方法 2" << endl;

   }

};

 

classSub3

{

public:

   voidf3()

   {

       cout <<"子系统的方法 3" << endl;

   }

};

 

classFacade

{

private:

   Sub1 *s1;

   Sub2 *s2;

   Sub3 *s3;

public:

   Facade()

   {

       s1 =newSub1();

       s2 =newSub2();

       s3 =newSub3();

   }

   voidmethod()

   {

       s1->f1();

       s2->f2();

       s3->f3();

   }

};

 

intmain()

{

   Facade *f = newFacade();

   f->method();

   cin.get();

   return 0;

}

运行结果如下:

0 0
原创粉丝点击