java-代理模式案例

题目:

请根据下面的叙述,依据题目给定的设计模式设计出相应的解决方案,画出解决方案对应的类图并编码实现,编程语言不限。

请利用代理模式(PROXY),实现一个用户权限管理实例,需要进行权限控制的操作有:用户浏览(browse)、读写操作(readWrite)、权限管理(authorityManagement)。权限有三种,分别是:游客(genericUser)、已注册用户(registeredUser)、管理员(administrator)

其中游客可以进行的操作为:用户浏览

已注册用户可以进行的操作为:用户浏览、读写操作

管理员可以进行的操作为:用户浏览、读写操作、权限管理

用户权限不够时提示"您无法获得该权限操作"并阻止相应操作。

 

 

 

 

 

类图:

代码:

package Proxy;

interface IUserOper
{
    void browse();
    void readWrite();
    void AuthorityManagement();
};

class UserOper implements IUserOper
{
    public void browse(){
        System.out.println("执行浏览操作");
    }
    public void readWrite(){
        System.out.println("执行读写操作");
    }
    public void AuthorityManagement()
    {
        System.out.println("执行权限管理操作");
    }

};

class AdministratorProxy implements IUserOper
{
    private UserOper userOper = new UserOper();
    public void browse(){
        System.out.print("权限通过——");
        userOper.browse();
    }
    public void readWrite(){
        System.out.print("权限通过——");
        userOper.readWrite();
    }
    public void AuthorityManagement(){
        System.out.print("权限通过——");
        userOper.AuthorityManagement();
    }
};

class RegisteredUserProxy implements IUserOper
{
    private UserOper userOper = new UserOper();
    public void browse(){
        System.out.print("权限通过——");
        userOper.browse();
    }
    public void readWrite()
    {
        System.out.print("权限通过——");
        userOper.readWrite();
    }
    public void AuthorityManagement(){

        System.out.println("您无法获得该权限操作——");
        
    }
};

class GenericUserProxy implements IUserOper
{
    private UserOper userOper = new UserOper();
    public void browse(){
        System.out.print("权限通过——");
        userOper.browse();
    }
    public void readWrite(){
        System.out.println("您无法获得该权限操作——");
    }
    public void AuthorityManagement()
    {
        System.out.println("您无法获得该权限操作——");
    }
};

public class SecurityProxy {
    public static void main(String[] args){
        System.out.println("游客操作");
        GenericUserProxy gu = new GenericUserProxy();
        gu.browse();
        gu.readWrite();
        gu.AuthorityManagement();
        System.out.println("注册用户操作");
        RegisteredUserProxy ru = new RegisteredUserProxy();
        ru.browse();
        ru.readWrite();
        ru.AuthorityManagement();
        System.out.println("管理员操作");
        AdministratorProxy au = new AdministratorProxy();
        au.browse();
        au.readWrite();
        au.AuthorityManagement();
    }
}

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值