设计模式——外观模式(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;
}
如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。
首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划价,然后缴款,才能到化验部门做化验。化验后,再回到门诊室。
解决这种不便的方法便是引进门面模式。可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。这个接待员就是外观模式的体现,病人只接触接待员,由接待员负责与医院的各个部门打交道。
特点:为子系统的一组接口提供一个一致的界面。使用户使用起来更加方便。
实现代码:
#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;
}
相关文章推荐
- Java 设计模式 - 外观模式
- C#设计模式-外观模式(Facade Patten)
- 设计模式 - 外观(Facade)
- 【java设计模式】外观模式
- 设计模式培训之九:外观模式
- 设计模式11-外观模式
- 设计模式(八)外观模式
- JS设计模式——外观模式
- 4.java设计模式(读书笔记)外观模式
- JavaScript 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观(Facade)模式
- 设计模式——适配器,桥接,外观
- 设计模式之Facade(外观 总管 Manager)
- 设计模式之外观模式
- 游戏中的设计模式二(外观模式)
- Java 设计模式_外观模式
- Head First 设计模式之适配器模式与外观模式
- 设计模式—外观模式
- 设计模式 之 外观