c++/qt设计模式-外观模式

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

 


版权声明:本文为SuperYang_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。