文章中部分内容和思路来自《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.