设计模式之状态模块加观察者模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式之状态模块加观察者模式
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
背景:
用戶操作鼠標(biāo),涉及的動(dòng)作有左擊、右擊、雙擊。每種動(dòng)作對(duì)應(yīng)一種狀態(tài),狀態(tài)的切換對(duì)應(yīng)著不同的鼠標(biāo)點(diǎn)擊事件。
類(lèi)圖:
?
狀態(tài)接口類(lèi):
/*** 狀態(tài)接口**/ public interface State {public void change(); }
?
鼠標(biāo)移入類(lèi):
public class MouseoverState implements State{public void change(){System.out.println("鼠標(biāo)移入了。");} }
?
鼠標(biāo)移出類(lèi):
public class MouseoutState implements State{public void change() {System.out.println("鼠標(biāo)移出了。");} }
?
鼠標(biāo)類(lèi):
// 被觀察者 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("鼠標(biāo)狀態(tài)發(fā)生了變化。");this.state = state;setChanged() ;notifyObservers(state);} }
?
用戶操作類(lèi):
/*** 操作類(lèi),同時(shí)也是觀察者**/ public class User implements Observer{@Overridepublic void update(Observable o, Object arg) {// TODO Auto-generated method stubState state = (State)arg ;state.change() ;}}
?
調(diào)用類(lèi):
public class Main {public static void main(String[] args) {User user = new User() ;Mouse mouse = new Mouse();State state = new MouseoutState() ;// 添加被觀察者 mouse.addObserver(user);// 狀態(tài)被改變 mouse.setState(state);} }
?
如有不當(dāng)之處,請(qǐng)給我留言,方便交流與討論。
?
轉(zhuǎn)載于:https://www.cnblogs.com/xinzhuangzi/p/4101242.html
總結(jié)
以上是生活随笔為你收集整理的设计模式之状态模块加观察者模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 植筋胶价格多少?使用方法有哪些?
- 下一篇: 求一个何姓微信网名