您的位置:首页 > 其它

设计模式——外观模式(1)

2010-08-31 14:07 225 查看
外观模式

如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。
首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划价,然后缴款,才能到化验部门做化验。化验后,再回到门诊室。
解决这种不便的方法便是引进门面模式。可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。这个接待员就是外观模式的体现,病人只接触接待员,由接待员负责与医院的各个部门打交道。
特点:为子系统的一组接口提供一个一致的界面。使用户使用起来更加方便。

实现代码:
#include<iostream>
#include <string>
using namespace std;

class SubSysOne
{
public:
void MethodOne()
{
cout<<"挂号"<<endl;
}
};

class SubSysTwo
{
public:
void MethodTwo()
{
cout<<"划价"<<endl;
}
};

class SubSysThree
{
public:
void MethodThree()
{
cout<<"缴费"<<endl;
}
};
class SubSysFour
{
public:
void MethodFour()

{
cout<<"取药"<<endl;
}
};

//接待员类 (包括:挂号、划价、缴费、取药)
class Facade
{
private:
SubSysOne* sub1;
SubSysTwo* sub2;
SubSysThree* sub3;
SubSysFour* sub4;
public:
Facade()
{
sub1 = new SubSysOne();
sub2 = new SubSysTwo();
sub3 = new SubSysThree();
sub4 = new SubSysFour();
}
~Facade()
{
delete sub1;
delete sub2;
delete sub3;
delete sub4;
}

void FacadeMethod()
{
sub1->MethodOne();
sub2->MethodTwo();
sub3->MethodThree();
sub4->MethodFour();
}
};

//客户端
int main()
{
Facade* test = new Facade();
test->FacadeMethod();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: