zoukankan      html  css  js  c++  java
  • 状态模式之观察者和状态模式

      机房收费系统合作时,我们发现在上下机那儿可以用到观察者模式、状态模式和职责链模式,他们都是行为型模式,但是他们是有区别的。

      观察者模式

      我的博客链接:机房收费系统之观察者模式

      观察者模式:一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。

     

      用的条件:当一个对象的改变需要同时改变其他对象的时候,而且不知道具体有多少对象有待改变时。

     

      与状态模式不同:他有两个方面(Subject和Observer),而且一个方面依赖于另一个方面,这时用观察者模式可以将这两者封装在独立的对象中使它们各自独立地改变和复用。这里的具体Subject类可以有上机、下机和强制下机,具体的Observer是判断卡是否存在,卡余额是否足够,卡是否正在上机,增加上机记录,修改上机记录,修改卡余额

      状态模式

      我的博客链接:设计模式之状态模式

      状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

      用的条件:一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。或者一个操作中含有庞大的多分支结结构,并且这些分支决定于对象的状态。或当控制一个对象状态的条件表达式过于复杂时的情况。

     

      与观察者模式的不同:他把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。具体的State是判断卡是否存在,卡余额是否足够,卡是否正在上机,增加上机记录。

  • 相关阅读:
    [LeetCode]Subsets II
    [LeetCode]Subsets
    [LeetCode]Combinations
    [LeetCode]Minimum Window Substring
    [LeetCode]Search a 2D Matrix
    [LeetCode]Edit Distance
    [LeetCode]Simplify Path
    Adaboost算法
    [LeetCode]Text Justification
    31、剑指offer--从1到n整数中1出现次数
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3100630.html
Copyright © 2011-2022 走看看