代理模式实现婚介所

婚介所其实就是找对象的一个代理,请仿照我们的课堂例子论坛权限控制代理完成这个实际问题,其中如果年纪小于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();

}

 

posted @ 2021-10-29 16:18  好吗,好  阅读(121)  评论(0)    收藏  举报