importjava.util.*;interfacePatient{publicStringgetName();}interfaceDisposer{publicvoiddispose(Patientpatient);}classRegistryimplementsDisposer{// 挂号publicvoiddispose(Patientpatient){System.out.println("I am registering..."+patient.getName());}}classDoctorimplementsDisposer{// 医生门诊publicvoiddispose(Patientpatient){System.out.println("I am diagnosing..."+patient.getName());}}classPharmacyimplementsDisposer{// 取药publicvoiddispose(Patientpatient){System.out.println("I am medicine... "+patient.getName());}}classFacade{privatePatientpatient;publicFacade(Patientpatient){this.patient=patient;}voiddispose(){Registryregistry=newRegistry();Doctordoctor=newDoctor();Pharmacypharmacy=newPharmacy();registry.dispose(patient);doctor.dispose(patient);pharmacy.dispose(patient);}}classConcretePatientimplementsPatient{privateStringname;publicConcretePatient(Stringname){this.name=name;}publicStringgetName(){returnname;}}publicclassFacadeTest{publicstaticvoidmain(String[]args){Patientpatient=newConcretePatient("zst");Facadef=newFacade(patient);f.dispose();}}
#include<iostream>#include<string>usingnamespacestd;classPatient{public:virtualstringgetName()=0;};classDisposer{public:virtualvoiddispose(Patient*patient)=0;};classRegistry:publicDisposer{// 挂号
public:voiddispose(Patient*patient){cout<<"I am registering...."<<patient->getName()<<endl;}};classDoctor:publicDisposer{// 医生门诊
public:voiddispose(Patient*patient){cout<<"I am diagnosing...."<<patient->getName()<<endl;}};classPharmacy:publicDisposer{// 取药
public:voiddispose(Patient*patient){cout<<"I am giving medicine...."<<patient->getName()<<endl;}};classFacade{private:Patient*patient;public:Facade(Patient*patient){this->patient=patient;}voiddispose(){Registry*registry=newRegistry();Doctor*doctor=newDoctor();Pharmacy*pharmacy=newPharmacy();registry->dispose(patient);doctor->dispose(patient);pharmacy->dispose(patient);}};classConcretePatient:publicPatient{private:stringname;public:ConcretePatient(stringname){this->name=name;}stringgetName(){returnname;}};intmain(){Patient*patient=newConcretePatient("zst");Facade*f=newFacade(patient);f->dispose();return0;}