我是靠谱客的博主 激动西牛,最近开发中收集的这篇文章主要介绍C++设计模式-外观模式基本概念代码与实例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

 

 

基本概念

代码与实例


 

基本概念

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

增加外观Facade可以提供一个简单的接口,减少它们之间的依赖;

为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。

 

刚开始学面向对象程序设计的时候,基本上都会默认采用这种方法,因为它完美的提现了依赖倒转原则和迪米特法则的思想。

 

UML图如下:

 

代码与实例

程序运行截图如下:

源码如下:

Head.h

#ifndef HEAD_H
#define HEAD_H

class SubSystemOne;
class SubSystemTwo;
class SubSystemThree;
class SubSystemFour;

class Facade{

public:
	Facade();
	~Facade();
	void methodA();
	void methodB();
	void methodC();

private:
	SubSystemOne *one;
	SubSystemTwo *two;
	SubSystemThree *three;
	SubSystemFour *four;
};


class SubSystemOne{

public:
	void methodOne();
};

class SubSystemTwo{

public:
	void methodTwo();
};

class SubSystemThree{

public:
	void methodThree();
};

class SubSystemFour{

public:
	void methodFour();
};

#endif	//HEAD_H

Head.cpp

#include "Head.h"
#include <iostream>
#include <string>
using namespace std;

Facade::Facade()
{
	one = new SubSystemOne;
	two = new SubSystemTwo;
	three = new SubSystemThree;
	four = new SubSystemFour;
}

Facade::~Facade()
{
	delete one;
	delete two;
	delete three;
	delete four;
}

void Facade::methodA()
{
	cout << "方法组A" << endl;
	one->methodOne();
	two->methodTwo();
	three->methodThree();
}

void Facade::methodB()
{
	cout << "方法组B" << endl;
	three->methodThree();
	four->methodFour();
	two->methodTwo();
}

void Facade::methodC()
{
	cout << "方法组C" << endl;
	one->methodOne();
	three->methodThree();
}

void SubSystemOne::methodOne()
{
	cout << "SubSystemOne::methodOne()" << endl;
}

void SubSystemTwo::methodTwo()
{
	cout << "SubSystemTwo::methodTwo()" << endl;
}

void SubSystemThree::methodThree()
{
	cout << "SubSystemThree::methodThree()" << endl;
}

void SubSystemFour::methodFour()
{
	cout << "SubSystemFour::methodFour()" << endl;
}

main.cpp

#include "Head.h"
#include <iostream>
#include <string>
using namespace std;

int main(int *argc, int *argv[]){

	Facade *facada = new Facade;
	facada->methodA();
	cout << "---------------华丽分割线---------------"<< endl;
	facada->methodC();
	cout << "---------------华丽分割线---------------"<< endl;
	facada->methodB();
	delete facada;

	getchar();
	return 0;
}

 

最后

以上就是激动西牛为你收集整理的C++设计模式-外观模式基本概念代码与实例的全部内容,希望文章能够帮你解决C++设计模式-外观模式基本概念代码与实例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部