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

     

   外观模式

如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。

首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划价,然后缴款,才能到化验部门做化验。化验后,再回到门诊室。

解决这种不便的方法便是引进门面模式。可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。这个接待员就是外观模式的体现,病人只接触接待员,由接待员负责与医院的各个部门打交道。

特点:为子系统的一组接口提供一个一致的界面。使用户使用起来更加方便。

实现代码:

#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;

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值