`
leh627
  • 浏览: 23958 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

结合实际运用设计模式(一)-Observer 模式

阅读更多
Observer 模式在实际运用中非常常用。下面结合自己的理解写了一个example,备以后参考。

运用场景, 用户存,取款实例,当我们在银行,网上,存或者取款时,一般银行会发一条短信告知用户取了多少,或者是存了多少钱。

这时候我们就要用到 Observer 模式。一旦我们储蓄账户有发生变动,系统就应该给用户发送一条信息告知用户
view plaincopy to clipboardprint?
//被观察者  
import java.util.Observable;  
  
public class WithdrawMoney extends Observable{  
    private Money money ;  
    public WithdrawMoney(Money my) {  
        this.money = my;  
    }  
    public void extract(int amount){  
        if(amount>0){  //  
            money.setExtract(true);  
            money.setAmount(amount);  
            setChanged();  
            notifyObservers(money);  //通知观察者,这个业务发生了
        }  
    }  
    public void deposit(int amount){  
        if(amount>0){  //  
            money.setExtract(false);  
            money.setAmount(amount);  
            setChanged();  
            notifyObservers(money);  //通知观察者,这个业务发生了
        }  
    }  
    public Money getMoney() {  
        return money;  
    }  
    public void setMoney(Money money) {  
        this.money = money;  
    }  
}  
  
  
//观察者  
import java.util.Observable;  
import java.util.Observer;  
  
public class Informed implements Observer{  
  
    public void update(Observable o, Object arg) {  
        Money money = (Money)arg;  
        String message="You has been "+ (money.isExtract()?"extract ":"deposit " )+money.getAmount()+"$";  
        System.out.println(message);  
          
    }  
  
  
}  
  
//测试类  
public class Main {  
    public static void main(String[] args) {  
       // 初始化Money 对象
        Money money = new Money(100000);  
        //创建一个被观察者
        WithdrawMoney withdrawMoney = new  WithdrawMoney(money);  
        //创建一个观察者
        Informed informed = new Informed();  
       
        //将观察者添加被观察对象的观察者队列中 
        withdrawMoney.addObserver(informed);  
        //withdrawMoney.deposit(10);  
                  withdrawMoney.extract(100);  
    }  
}  
  
结果:  
  
You has been extract 100$  
分享到:
评论

相关推荐

    Laravel开发-laravel-transaction-observer

    观察者模式是一种设计模式,它定义了对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在Laravel中,观察者常用于监听模型事件,如`created`, `updated`, `...

    23种设计模式彩图-pdf高清版

    《23种设计模式彩图-PDF高清版》是一本专注于设计模式的教材,它不仅仅提供文字性的描述,而是结合了色彩丰富的UML(统一建模语言)图示,帮助读者以更直观的方式理解和记忆这23种设计模式。设计模式是软件工程中...

    设计模式精解-GoF23种设计模式解析附C实现源码.pdf

    通过阅读本书并结合实际项目的开发经验,可以深刻体会到设计模式在软件开发中的重要作用。设计模式不仅可以帮助开发者解决常见的设计问题,还可以提高代码的质量,使系统更易于扩展和维护。在实际工作中,掌握这些...

    设计模式--Java语言版本

    在IT行业中,设计模式是软件开发中的重要概念,它代表了在特定情境下解决...在阅读《设计模式--Java语言版本》时,读者应结合具体代码示例,深入理解每种模式的精髓,并尝试在自己的项目中运用,以达到学以致用的目的。

    《设计模式--基于C#的工程化实现及扩展》.(王翔)

    在这本书中,作者王翔结合实际的C#编程实践,详细阐述了各种设计模式的原理、应用以及在.NET框架下的具体实现。 一、单例模式(Singleton) 单例模式确保一个类只有一个实例,并提供全局访问点。在C#中,可以使用...

    设计模式--C#版[此忆附有源码]

    本资源“设计模式--C#版[此忆附有源码]”涵盖了对C#语言的基本理解以及设计模式的深入探讨,并提供了实际的源代码示例,方便开发者学习和应用。 首先,C#是一种面向对象的编程语言,由微软公司开发,主要用于构建...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    通过学习GoF的23种设计模式,我们可以更好地理解和运用面向对象的设计原则,提高软件的可维护性和扩展性。每种模式都有其适用场景和优缺点,正确选择和使用设计模式对于构建高质量的软件系统至关重要。此外,结合...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    本文旨在深入解析这些设计模式,并结合C++语言的实际代码实现,帮助读者更好地理解和掌握设计模式的核心思想。 #### 创建型模式 **1.1 Factory模式** - **定义**:提供了一个创建对象的接口,但让子类决定实例化...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)__0525).rar

    同时,王翔可能会结合实际工程案例,展示如何在C#项目中有效地运用设计模式,帮助读者理解设计模式如何提升软件的可复用性、可读性和可扩展性。 通过对这本书的学习,开发者不仅能够了解并掌握设计模式的基本概念,...

    新版设计模式手册-笔记

    设计模式是一种在软件设计中...通过学习和运用设计模式,开发者可以避免重复发明轮子,从而更高效地解决复杂问题。这份笔记是理解设计模式的一个极好资源,对于想要提升软件设计能力的程序员来说,具有很高的参考价值。

    设计模式精解-GoF23种设计模式解析

    设计模式的学习是一个渐进的过程,它要求开发者不仅要理解每个模式的概念,还要能够将其应用到实际的软件设计中。随着对模式理解的加深,开发者会逐渐体会到它们在解决具体问题时的价值。下面,我们将逐一介绍这23种...

    设计模式精解-GoF+23种设计模式解析.pdf

    - **Observer模式**:定义了对象之间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - **Memento模式**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该...

    C#设计模式-C#设计模式

    本文将深入探讨C#中的几种重要设计模式,并阐述它们的核心概念、应用场景以及如何在实际项目中有效地运用。 1. 单例模式(Singleton): 单例模式确保一个类只有一个实例,并提供全局访问点。在C#中,通常通过私有...

    设计模式-王翔 全本

    《设计模式-王翔 全本》是一本深入探讨软件设计模式的重要著作,作者王翔在书中详尽地阐述了设计模式的理论基础与实践应用。设计模式是软件工程中的重要概念,它代表了在特定情境下,经过时间检验、可复用的解决方案...

    设计模式精解-GoF23种设计模式解析附C实现源码

    通过以上内容可以看出,《设计模式精解——GoF23种设计模式解析及C实现源码》这本书不仅全面介绍了23种设计模式的基本概念和应用场景,还提供了详细的C语言实现示例,为学习者提供了一个理论与实践相结合的学习平台...

    Java 中的设计模式 - jdon

    《Java中的设计模式 - jdon》是一本深入探讨Java编程中设计模式的电子书,它主要聚焦于如何在实际开发中应用和理解这些经典的设计原则和模式。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决常见...

Global site tag (gtag.js) - Google Analytics