代理模式实现婚介所
婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。
Female
public class Female implements NeedPerson{ @Override public void findPerson() { // TODO Auto-generated method stub System.out.println("女生想找个陪伴自己的另一半"); } @Override public void showPerson() { // TODO Auto-generated method stub System.out.println("女生的信息:白富美"); } @Override public void showMateSelectionRequirements() { // TODO Auto-generated method stub System.out.println("女生的要求:高大帅气,有钱多金"); } @Override public void setLevel(int level) { // TODO Auto-generated method stub } }
MarriagAgency
public class MarriageAgency implements NeedPerson{ private Female f=new Female(); private int level=0; @Override public void findPerson() { // TODO Auto-generated method stub if(level==0) { System.out.println("对不起,您没有权限"); }else if(level==1) { f.findPerson(); } } @Override public void showPerson() { // TODO Auto-generated method stub if(level==0) { System.out.println("对不起,您没有权限"); }else if(level==1) { f.showPerson(); } } @Override public void showMateSelectionRequirements() { // TODO Auto-generated method stub if(level==0) { System.out.println("对不起,您没有权限"); }else if(level==1) { f.showMateSelectionRequirements();; } } @Override public void setLevel(int level) { // TODO Auto-generated method stub this.level=level; } }
NeedPerson
public interface NeedPerson { public void findPerson(); public void showPerson(); public void showMateSelectionRequirements(); public void setLevel(int level); }
Client
import java.util.Scanner; public class Client { public static void main(String []args) { NeedPerson nd; int level=0; nd=new MarriageAgency(); int age=0; Scanner sc=new Scanner(System.in); System.out.println("输入您的年龄"); age=sc.nextInt(); if(age>=18) { level=1; } nd.setLevel(level); nd.findPerson(); nd.showPerson(); //nd.setLevel(level); nd.showMateSelectionRequirements(); } }
c++代码
#include<iostream> #include<string> #include"tinyxml2.h" using namespace std; using namespace tinyxml2; class NeedPerson { public: virtual void findPerson() = 0; virtual void showPerson()=0; virtual void showMateSelectionRequirements()=0; virtual void setLevel(int level)=0; }; class Female:public NeedPerson{ public: void findPerson() { // TODO Auto-generated method stub cout<<"女生想找个陪伴自己的另一半"<<endl; } void showPerson() { // TODO Auto-generated method stub cout<<"女生的信息:白富美"<<endl; } void showMateSelectionRequirements() { // TODO Auto-generated method stub cout<<"女生的要求:高大帅气,有钱多金"<<endl; } void setLevel(int level) { // TODO Auto-generated method stub } }; class MarriageAgency:public NeedPerson{ private: Female *f = new Female(); int level = 0; public: void findPerson() { // TODO Auto-generated method stub if (level == 0) { cout<<"对不起,您没有权限"<<endl; } else if (level == 1) { f->findPerson(); } } void showPerson() { // TODO Auto-generated method stub if (level == 0) { cout << "对不起,您没有权限" << endl; } else if (level == 1) { f->showPerson(); } } void showMateSelectionRequirements() { // TODO Auto-generated method stub if (level == 0) { cout << "对不起,您没有权限" << endl; } else if (level == 1) { f->showMateSelectionRequirements();; } } void setLevel(int level) { // TODO Auto-generated method stub this->level = level; } }; int main(){ NeedPerson *nd=NULL; int level = 0; XMLDocument xml; xml.LoadFile("config.xml"); XMLElement *category = xml.RootElement(); XMLElement *con = category->FirstChildElement("className"); // if ((con->GetText(), "MarriageAgency") == 0) //{ nd = new MarriageAgency(); //} int age = 0; cout<<"输入您的年龄"<<endl; cin>>age; if (age >= 18) { level = 1; } nd->setLevel(level); nd->findPerson(); nd->showPerson(); //nd.setLevel(level); nd->showMateSelectionRequirements(); }