状态模式:允许对象在内部状态改变的时候改变它的行为。
例如: 我们在12306上买票,行为是卖票,状态有两个,有余票则出票成功,余票不足就出票失败。
public class Station { public State state; private int tickets = 0; public Station(int tickets) { this.tickets = tickets; if(tickets>0) { state = new HasTicketState(this); } } public void soldTickets() { state.soldTicket(); } public void setTickets(int tickets) { this.tickets = tickets; if(tickets>0) { state = new HasTicketState(this); } } public int getTickets() { return this.tickets; } public void setState(State sta) { this.state = sta; } }
public abstract class State { public abstract void soldTicket(); }
public class NoTicketState extends State{ @Override public void soldTicket() { System.out.println("没有余票,出票失败"); } }
public class HasTicketState extends State{ private Station station; public HasTicketState(Station sta) { this.station = sta; } @Override public void soldTicket() { station.setTickets(station.getTickets()-1); System.out.println("出票成功,余票" + station.getTickets()+"张"); if(station.getTickets() == 0) { this.station.setState(new NoTicketState()); } } }
public static void main(String args[]) { Station sta = new Station(3); sta.soldTickets(); sta.soldTickets(); sta.soldTickets(); sta.soldTickets(); sta.setTickets(10); sta.soldTickets(); sta.soldTickets(); } }
相关推荐
笔记_HeadFirst设计模式
1.1 《Head First设计模式》阅读笔记.第一章 1.2 《Head First设计模式》阅读笔记.第二章 1.3 《Head First设计模式》阅读笔记.第三章 1.4 《Head First设计模式》阅读笔记.第四章 1.5 《Head First设计模式》...
HeadFirst设计模式学习笔记比较全面详细地讲解了13个设计模式,有利于大家更好的学习HeadFirst设计模式,希望亲们会喜欢~~~
Head First 设计模式学习笔记。更多内容请参见文章内容。
HeadFirst设计模式 读书 笔记
HeadFirst 设计模式学习笔记3--装饰模式 Demo http://blog.csdn.net/laszloyu/archive/2010/05/12/5582561.aspx
HeadFirst 设计模式学习笔记2--观察者模式 demo http://blog.csdn.net/laszloyu/archive/2010/05/12/5581769.aspx
http://blog.csdn.net/laszloyu/archive/2010/05/11/5579765.aspx 示例代码
Head First设计模式读书笔记-DesignPatterns
Head.First 设计模式学习笔记.pdf Head.First 设计模式学习笔记.pdf
NULL 博文链接:https://never-say-never.iteye.com/blog/851923
NULL 博文链接:https://zhangfy068.iteye.com/blog/1706132
著名的《Head First Design ...由于书本过长,整理出笔记帮助回想起设计模式。文件是docx格式,只能由OFFICE Word 2007之后的版本打开,内附Visio类图文件。本文由个人整理摘录,部分内容来自书本,仅供学习使用。
NULL 博文链接:https://chxiaowu.iteye.com/blog/1276845
趣味的移动开发讲解讲解,类似个人笔记,非常容易懂的,有好多勾画图
headfirst 设计模式读书笔记 书很好,浅显易懂,例子生动,适合初学者
设计模式Head First学习笔记,以及使用java编写的设计模式源码,Java原生sdk实现23种设计模式
java原始中的设计模式 Gof设计模式 一个Android应用程序,该应用程序演示了以下来源的GoF设计模式的源代码: E.Freeman,E.Freeman,K.Sierra,B.Bates的书:copyright:O'Reilly 2004 布莱恩·汉森(Bryan Hansen),...