文章中部分内容和思路来自《Head First设计模式》

模式定义

提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

模式类图

典型案例

1.案例说明

在我们使用电脑的过程中,我们只需要按下电源键整个电脑就能正常开机工作。关于机器内部各部件的工作情况我们并不关心,这就是外观模式的一种体现。

2.代码实现

----------

Computer.h

----------

#ifndef COMPUTER_H
#define COMPUTER_H




class Computer
{
public:
    Computer();


public:
    void work();
};


#endif // COMPUTER_H

------------

Computer.cpp

------------

#include "Computer.h"


#include "Cpu.h"
#include "Disk.h"
#include "Memory.h"


Computer::Computer()
{


}


void Computer::work()
{
    // 是否要放到成员函数,个人感觉没必要
    Cpu cpu;
    Disk disk;
    Memory memory;
    cpu.work();
    disk.work();
    memory.work();
}

-----

Cpu.h

-----

#ifndef CPU_H
#define CPU_H




class Cpu
{
public:
    Cpu();


public:
    void work();
};


#endif // CPU_H


 

-------

Cpu.cpp

-------

#include "Cpu.h"


#include <QDebug>


Cpu::Cpu()
{


}


void Cpu::work()
{
    qDebug() << "cpu work.";
}


------

Disk.h

------

#ifndef DISK_H
#define DISK_H




class Disk
{
public:
    Disk();


public:
    void work();
};


#endif // DISK_H


--------

Disk.cpp

--------

#include "Disk.h"


#include <QDebug>


Disk::Disk()
{


}


void Disk::work()
{
    qDebug() << "disk work.";
}


--------

Memory.h

--------

#ifndef MEMORY_H
#define MEMORY_H




class Memory
{
public:
    Memory();


public:
    void work();
};


#endif // MEMORY_H


----------

Memory.cpp

----------

#include "Memory.h"


#include <QDebug>


Memory::Memory()
{


}


void Memory::work()
{
    qDebug() << "memery work.";
}


--------

main.cpp

--------

/**
 * 设计模式-外观模式
 * 要点:1,外观类 2,分系统类
 */
#include <QCoreApplication>


#include "Computer.h"


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);


    Computer cp;
    cp.work(); // poweron, poweroff


    return a.exec();
}


 ====================================================================

博主有自己的个人主页啦!请求关注,请求支持。QAQ.

 

更多推荐