这上一周项目组想做一个权限的东东,通过用户的的权限,看能不能执行某个业务方法,然后我模拟了一个环境。今天上班写出来与网友分享:
先有两个业务类
java 代码
- public class BusinessA {
- public static void a() {
- System.out.println("println A");
- }
- }
- public class BusinessB {
- public static void b() {
- System.out.println("println B");
- }
- }
还要有被观察的对象类
java 代码
- public class UserObersered extends Observable {
- public void codeChange(Object obj) {
- setChanged();
- User user = (User)obj ;
- notifyObservers(user.getMarkcode());
- }
- }
还要有一个业务方法实现类,这个类是通过上面两个业务类完成一个具体的业务。
java 代码
- public class Service implements Observer{
- private List<String> list = new ArrayList<String>();
-
- public void businessMethod() throws Exception {
- System.out.println("start service ");
- if (list.contains("1")) {
-
- throw new Exception("您没有这个权限访问此方法.");
- } else {
- BusinessB.b();
- }
- System.out.println("end service ");
- }
-
- public void update(Observable arg0, Object arg1) {
- if (arg1 instanceof String[]) {
- for (int i = ((String[]) arg1).length - 1; i >= 0; i--) {
- list.add(((String[]) arg1)[i]);
- }
- }
- try {
- businessMethod();
- } catch (Exception e) {
-
- e.printStackTrace();
- }
- }
- }
做好这此这后做一下测试:
java 代码
- UserObersered userOber = new UserObersered();
-
-
- Service service = new Service();
-
- userOber.addObserver(service);
-
- User user = new User();
- String[] markcode = {"1","2"};
- user.setMarkcode(markcode);
- userOber.codeChange(user);
对markcode进行修改就能看到具体的效果。