`
cljspn
  • 浏览: 47596 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
社区版块
存档分类
最新评论

观察者模式的应用

阅读更多

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

先有两个业务类

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进行修改就能看到具体的效果。
分享到:
评论

相关推荐

    C#设计模式—观察者模式应用实例

    6. ObserverSample.csproj:这是项目文件,包含了整个观察者模式应用的编译和构建信息。 在C#中,观察者模式通常通过以下步骤实现: 1. 定义主题(Subject):主题是被观察的对象,它维护了一个观察者列表,并提供...

    观察者模式应用

    **观察者模式的应用场景:** 1. **实时数据更新**:例如股票报价系统,用户可以订阅特定的股票,当股票价格变化时,系统自动将最新价格推送给用户。 2. **事件驱动编程**:在GUI编程中,按钮点击、文本输入等事件的...

    观察者模式的一个应用

    ### 观察者模式概述与应用 #### 一、观察者模式定义 观察者模式是一种常用的软件设计模式,主要用于处理对象间的依赖关系。在这种模式下,一个对象(称为“主题”或“被观察者”)负责维护一组依赖于它的对象...

    观察者模式以及在Android开发中的应用

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在软件工程中,这种模式被广泛应用于事件驱动编程和异步通信中。在Android...

    Android 设计模式学习之观察者模式应用实例

    本文将深入探讨一种常用的设计模式——观察者模式(Observer Pattern),并结合Android实际应用给出实例解析。 观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,...

    观察者模式代码

    在压缩包中的`PatternObserver`文件可能包含了这种模式的实现代码,你可以通过查看这些代码深入了解如何将观察者模式应用到实际项目中,以及如何处理观察者既是目标对象的情况。理解并熟练运用观察者模式,有助于...

    C++观察者模式学习代码

    测试文件`testWindows`可能包含了针对Windows平台的观察者模式应用实例,如处理窗口事件或者线程间的通信。 通过观察者模式,我们可以将系统解耦,使得主题(如任务队列)与观察者(如事件处理器)之间的关联变得...

    观察者模式框架2

    ### 观察者模式框架2 #### 概述 观察者模式是一种常用的设计模式,在软件工程领域被广泛采用。...通过本篇介绍的小型观察者模式框架,开发者可以快速地将观察者模式应用到实际项目中,提高系统的灵活性和可维护性。

    安卓开发观察者模式应用-一个service通知多个activity更新ui的实现

    在安卓开发中,观察者模式(Observer Pattern)是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程,尤其...

    设计模式 观察者模式 以Android中TextView文本内容发生变化为背景

    通过这个以TextView为例的观察者模式应用,我们可以看到设计模式在实际开发中的重要性,它可以帮助我们编写更灵活、可复用的代码,提高代码的可维护性和可读性。在学习和使用设计模式的过程中,我们应该结合实际场景...

    观察者模式实现了股价涨跌提示

    在这个场景中,"股价涨跌提示"的功能就是一个典型的观察者模式应用实例。让我们深入探讨一下如何使用这种模式来实现这个功能。 在股市中,股民关注的股票价格时刻都在变动。当股票价格的涨跌幅达到特定阈值(例如5%...

    php观察者模式应用场景实例详解

    PHP作为一门广泛用于Web开发的脚本语言,其面向对象编程能力日渐强大,因此在PHP中实现观察者模式也是十分常见的一种设计模式应用。 在PHP中实现观察者模式时,通常的做法是定义两个接口:一个是观察者(Observer)...

    56丨观察者模式(上):详解各种应用场景下观察者模式的不同实现方式1

    观察者模式的实现方式有很多种,根据不同的应用场景和需求,可以有完全不同的实现方式。下面是一种经典的实现方式: ```java public interface Subject { void registerObserver(Observer observer); void ...

    Android设计模式之观察者模式

    **二、Android中的观察者模式应用** 1. **BroadcastReceiver**:Android的广播接收器是观察者模式的一个经典应用。系统或应用程序可以发送广播意图,而BroadcastReceiver作为观察者,注册后能接收到这些广播,从而...

    java观察者模式观察者模式

    观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...

    设计模式实现——观察者模式

    在《设计模式实现——观察者模式》这篇博客中,作者可能详细解释了观察者模式的概念、结构以及其在实际编程中的应用。以下是对观察者模式的详细阐述: 1. **模式定义**:观察者模式是一种对象行为型模式,它允许...

    运用MVC模式及观察者模式的java小程序

    在Java编程领域,设计模式是解决常见问题的模板或最佳实践。在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的...分析和学习这些代码将有助于深入理解MVC和观察者模式的实际应用。

    设计模式-观察者模式.ppt

    观察者模式在现实世界中有广泛的应用,例如在股票分析软件中,股票价格的变动需要实时反映在各种图表和指标上,这就需要一个系统来自动通知所有相关的组件。在这种情况下,股票交易所可以看作是主题,而各种分析软件...

Global site tag (gtag.js) - Google Analytics