结构型模式:Facade模式
来源:互联网 发布:极限挑战网络更新时间 编辑:程序博客网 时间:2024/05/17 11:06
Façade模式:简单来说,就是在我们实现一个软件时,可能定义了很多类,实现了很多功能,但是对于用户来
说,很多sdk,他都不需要,它只需要一个init函数,就能使用sdk,比如,某款工业相机,提供了复杂的功能
去控制和使用相机,但是客户还是希望,你只要给我一个init函数,然后我就能读你相机传输过来的图像就可
以了,这就是Facade设计模式,也像我们数码相机的快门一样,数码相机有很多功能,但是我们只要按快门就
能拍照,这个快门就是提供的一个Facade模式。
Facade外观模式,是一种结构型模式,它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多
的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。在这里我想举一个例子
:比如,现在有一辆汽车,我们(客户程序)要启动它,那我们就要发动引擎(子系统1),使四个车轮(子系
统2)转动。但是实际中我们并不需要用手推动车轮使其转动,我们踩下油门,此时汽车再根据一些其他的操作
使车轮转动。油门就好比系统给我们留下的接口,不论汽车是以何种方式转动车轮,车轮变化成什么牌子的,
我们要开走汽车所要做的还是踩下油门。
举例如下:
#pragma once
#ifndef _FACADE_H
#define _FACADE_H
class Subsystem1
{
public:
Subsystem1();
~Subsystem1();
void Operation();
protected:
private:
};
class Subsystem2
{
public:
Subsystem2();
~Subsystem2();
void Operation();
protected:
private:
};
class FacadeClass
{
public:
FacadeClass(void);
~FacadeClass(void);
void OperationWrapper();
private:
Subsystem1 *sub1;
Subsystem2 *sub2;
};
#endif
/////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////
#include "StdAfx.h"
#include "FacadeClass.h"
#include <iostream>
using namespace std;
Subsystem1::Subsystem1()
{
cout<<"subsystem construct run..."<<endl;
}
Subsystem1::~Subsystem1()
{
cout<<"subsystem1 exit run"<<endl;
}
void Subsystem1::Operation()
{
cout<<"subsystem1 operation.."<<endl;
}
Subsystem2::Subsystem2()
{
cout<<"subsystem2 construct run..."<<endl;
}
Subsystem2::~Subsystem2()
{
cout<<"subsystem2 exit run"<<endl;
}
void Subsystem2::Operation()
{
cout<<"subsystem2 operation.."<<endl;
}
FacadeClass::FacadeClass(void)
{
sub1=new Subsystem1();
sub2=new Subsystem2();
}
FacadeClass::~FacadeClass(void)
{
delete sub1;
delete sub2;
}
void FacadeClass::OperationWrapper()
{
sub1->Operation();
sub2->Operation();
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////
// Facade.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "FacadeClass.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
FacadeClass *f=new FacadeClass();
f->OperationWrapper();
return 0;
}
在该程序中,定义了2个类,然后根据一个FacadeClass组和使用2个类,对这两个类中的函数进行访问。
- 结构型-Facade模式
- facade模式--结构型模式
- 结构型模式:Facade模式
- 七、Facade模式 (结构型)
- 【结构型模式】facade(外观)
- 结构型模式-外观(facade)
- Facade模式---对象结构型模式
- Facade模式——结构型模式
- Facade外观模式(结构型模式)
- [设计模式-结构型]外观模式(Facade)
- 结构型模式-----外观模式(Facade)
- 结构型模式之Facade模式
- 结构型模式-Facade ( 外观模式 )
- 结构型模式:外观模式(Facade Pattern)
- 外观模式/Facade模式(结构型)
- Facade模式(外观模式 结构型)
- FACADE 外观模式 --对象结构型模式
- 结构模式:Facade外观模式
- Android 4.0的图形硬件加速及绘制技巧
- UVA 113 - Power of Cryptography
- 多些时间能少写些代码
- Servlet ---- 基础
- 倒排索引在算法中的运用
- 结构型模式:Facade模式
- 14.2.2 实现和运行颜色滤镜
- HTC G12快速安全root(破解)全攻略(软解s-off root)
- PostgreSQL之精妙的数据库导入导出工具架构 (五)
- VC++.NET 如何更改目标 .Net Framework 的总结
- SD 卡驱动程序分析
- MySQL GUI 工具汇总
- 利用Nginx的上传模块和上传进度模块实现网页上传文件
- C++技术复查表