自己不确定用法对不对的设计模式(代理模式)

本来打算上个星期就写代理模式的,但是经过很久的考虑也没有想到用什么样的例子能把代理模式表达清楚,今天无意中想到权限的问题:就是一个Android应用,具有不同权限的人登陆后能看到不同效果界面。

上面的这些是我自己的理解,如果有理解错的地方,希望大家多多批评指正,现在开始正文。

代理模式,根据名字理解就是用做一件事情的时候,用另一种方式代替自己去完成。由于时间仓促,就不做效果图了,先上个Java运行出来的图。根据用户不同的style来输出这个user所代表的类型。

根据上面的代码,从上向下以此建立class,先建立用户类,就是一个Javabean:

public class User {
	private String userName;
	private String style;

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getStyle() {
		return style;
	}

	public void setStyle(String style) {
		this.style = style;
	}

	@Override
	public String toString() {
		return "User [userName=" + userName + ", style=" + style + "]";
	}
}

然后建立代理类,大家会说,怎么只有代理类,没有看到实际的那个类呢。这里实际的那个类是在代理类中初始化的,大家看代码就会明白:

public class Proxy implements Subject {

	private Subject subject;
	private User user;

	public Proxy(User user) {
		this.user = user;
	}

	@Override
	public void operate() {

		if (user.getStyle().equals("1")) {
			if (subject instanceof ManagerSubject) {
			} else {
				subject = new ManagerSubject();
			}

		} else if (user.getStyle().equals("0")) {
			if (subject instanceof UserSubject) {

			} else {
				subject = new UserSubject();
			}
		} else if (user.getStyle().equals("2")) {
			if (subject instanceof VisitorSubject) {

			} else {
				subject = new VisitorSubject();
			}
		}

		subject.operate();
	}

}

这里有了一些在test类中没有的类,所以我们也得把他们建出来,因为类的内容都是一样的,只是类名不同。

public interface Subject {

	public void operate();
}

public class ManagerSubject implements Subject {

	@Override
	public void operate() {
		System.out.println("我是管理员类哦");
	}

}

public class UserSubject implements Subject {

	@Override
	public void operate() {
		System.out.println("我是用户类哦");
	}

}

public class VisitorSubject implements Subject {

	@Override
	public void operate() {
		System.out.println("我是游客哦");
	}

}

以上就是我对代理模式简单的理解,我知道代理模式有很多的样式,但是本人水平有限,只能给大家提供我所理解的代理模式。 我自认为上面有很多缺陷需要修改,所以我希望大家多批评指正,共同进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值