观察者模式的应用

这上一周项目组想做一个权限的东东,通过用户的的权限,看能不能执行某个业务方法,然后我模拟了一个环境。今天上班写出来与网友分享:

先有两个业务类

java 代码
  1. public class BusinessA {   
  2.     public static void a() {   
  3.         System.out.println("println A");   
  4.     }   
  5. }   
  6. public class BusinessB {   
  7.     public static void b() {   
  8.         System.out.println("println B");   
  9.     }   
  10. }  

还要有被观察的对象类

java 代码
  1. public class UserObersered extends Observable {   
  2.     public void codeChange(Object obj) {   
  3.        setChanged();   
  4.        User user = (User)obj ;   
  5.        notifyObservers(user.getMarkcode());   
  6.     }   
  7. }  
还要有一个业务方法实现类,这个类是通过上面两个业务类完成一个具体的业务。
java 代码
  1. public class Service implements Observer{   
  2.     private List<String> list = new ArrayList<String>();   
  3.   
  4.     public void businessMethod() throws Exception {   
  5.         System.out.println("start service ");   
  6.         if (list.contains("1")) {   
  7.             // BusinessA.a();   
  8.             throw new Exception("您没有这个权限访问此方法.");   
  9.         } else {   
  10.             BusinessB.b();   
  11.         }   
  12.         System.out.println("end service ");   
  13.     }   
  14.   
  15.     public void update(Observable arg0, Object arg1) {   
  16.         if (arg1 instanceof String[]) {   
  17.             for (int i = ((String[]) arg1).length - 1; i >= 0; i--) {   
  18.                 list.add(((String[]) arg1)[i]);   
  19.             }   
  20.         }   
  21.         try {   
  22.             businessMethod();   
  23.         } catch (Exception e) {   
  24.             // TODO Auto-generated catch block   
  25.             e.printStackTrace();   
  26.         }   
  27.     }   
  28. }  
做好这此这后做一下测试:
java 代码
  1. UserObersered userOber = new UserObersered();   
  2.           
  3.        
  4.     Service service = new Service();   
  5.                        
  6.        userOber.addObserver(service);   
  7.           
  8.        User user = new User();   
  9.        String[] markcode = {"1","2"};   
  10.        user.setMarkcode(markcode);   
  11.        userOber.codeChange(user);  
对markcode进行修改就能看到具体的效果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值