软件设计 石家庄铁道大学信息学院
实验14:代理模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解代理模式的动机,掌握该模式的结构;
2、能够利用代理模式解决实际问题。
[实验任务一]:婚介所
婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。
实验要求:
1. 提交类图;
2. 提交源代码;
3. 注意编程规范。
package test14; public class Client { public static void main(String[] args) { Proxy proxy=new Proxy(); Real real=new Real(); real.setAge(20); System.out.println("耿牛牛20岁"); proxy.setReal(real); proxy.lovers(); real.setAge(16); System.out.println("草莓熊16岁"); proxy.setReal(real); proxy.lovers(); } }
package test14; public class Proxy implements People{ private Real real=new Real(); public void setReal(Real a){ real=a; } public void setAge(int Age){ } public void lovers(){ if(real.getAge()<18){ System.out.println("对不起,您还未满18岁,不能早恋!"); } else{ real.lovers(); } } }
package test14; public class Real implements People{ private int age=0; public void setAge(int Age){ age=Age; } public int getAge(){ return age; } public void lovers(){ System.out.println("已为您匹配到最佳伴侣"); } }
package test14; public interface People { public void setAge(int Age); public void lovers(); }
#include<iostream> using namespace std; class People{ public: void setAge(int Age); void lovers(); }; class Real:public People{ private: int age; public: void setAge(int Age){ age=Age; } int getAge(){ return age; } void lovers(){ cout<<"已为您匹配到最佳伴侣"<<endl; } }; class Proxy:public People{ private: Real *real; public: void setReal(Real *real){ this->real=real; } void setAge(int Age){} void lovers(){ if(real->getAge()<18){ cout<<"对不起,您还未满18周岁,不能早恋!"<<endl; }else{ real->lovers(); } } }; int main(){ Proxy *proxy=new Proxy(); Real *real=new Real(); real->setAge(20); cout<<"耿牛牛20岁"<<endl; proxy->setReal(real); proxy->lovers(); real->setAge(16); cout<<"草莓熊16岁"<<endl; proxy->setReal(real); proxy->lovers(); }