设计模式之状态模块加观察者模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式之状态模块加观察者模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
背景:
用戶操作鼠標,涉及的動作有左擊、右擊、雙擊。每種動作對應一種狀態,狀態的切換對應著不同的鼠標點擊事件。
類圖:
?
狀態接口類:
/*** 狀態接口**/ public interface State {public void change(); }
?
鼠標移入類:
public class MouseoverState implements State{public void change(){System.out.println("鼠標移入了。");} }
?
鼠標移出類:
public class MouseoutState implements State{public void change() {System.out.println("鼠標移出了。");} }
?
鼠標類:
// 被觀察者 public class Mouse extends Observable{public enum STATE {MOUSEOVER,MOUSEOUT};private State state ;public State getState() {return state;}public void setState(State state) {System.out.println("鼠標狀態發生了變化。");this.state = state;setChanged() ;notifyObservers(state);} }
?
用戶操作類:
/*** 操作類,同時也是觀察者**/ public class User implements Observer{@Overridepublic void update(Observable o, Object arg) {// TODO Auto-generated method stubState state = (State)arg ;state.change() ;}}
?
調用類:
public class Main {public static void main(String[] args) {User user = new User() ;Mouse mouse = new Mouse();State state = new MouseoutState() ;// 添加被觀察者 mouse.addObserver(user);// 狀態被改變 mouse.setState(state);} }
?
如有不當之處,請給我留言,方便交流與討論。
?
轉載于:https://www.cnblogs.com/xinzhuangzi/p/4101242.html
總結
以上是生活随笔為你收集整理的设计模式之状态模块加观察者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 植筋胶价格多少?使用方法有哪些?
- 下一篇: 《编程匠艺》读书笔记