状态模式(java)
2021/11/24 17:10:10
本文主要是介绍状态模式(java),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
银行账户
用Java代码模拟实现课堂上的“银行账户”的实例,要求编写客户端测试代码模拟用户存款和取款,注意账户对象状态和行为的变化。
(1)Account.java:
package shiyan22; /** * @Description:环境类 * @author 马荣荣 * */ public class Account { private AccountState state; private String owner; public Account(String a,double b){ owner=a; state=new Yellowstate(this,b); state.stateCheck(); } public void setsta(AccountState a){ state=a; } public void deposit(double a){ System.out.println(owner+"存"+a+"元"); state.deposit(a); state.stateCheck(); System.out.println(); } public void withdraw(double a){ System.out.println(owner+"取"+a+"元"); state.withdraw(a); state.stateCheck(); System.out.println(); } }
(2)AccountState.java:
package shiyan22; /** * @Description:抽象状态类 * @author 马荣荣 * */ public abstract class AccountState { protected Account acc; protected double balance; public AccountState(Account a,double b){ super(); acc=a; balance=b; } public abstract void stateCheck(); public void deposit(double amount) { balance+=amount; System.out.println("存款成功"); System.out.println("余额为"+balance+"元"); } public void withdraw(double amount) { if((balance-amount)>-1000) { System.out.println("取钱成功!"); balance -= amount; System.out.println("当前余额:"+balance+"元"); }else { System.out.println("余额不足!"); System.out.println("当前余额:"+balance+"元"); } } }
(3)Client.java:
package shiyan22; public class Client { public static void main(String args[]){ Account acc=new Account("账户20194021",200); acc.deposit(3000); acc.withdraw(1000); acc.withdraw(3500); } }
(4)Greenstate.java:
package shiyan22; /** * @Description:正常状态类 * @author 马荣荣 * */ public class Greenstate extends AccountState{ public Greenstate(Account a,double b){ super(a,b); } public void stateCheck(){ if(balance<-1000){ acc.setsta(new Redstate(acc,balance)); }else if(balance>=-1000&&balance<0){ acc.setsta(new Yellowstate(acc,balance)); } } }
(5)Redstate.java:
package shiyan22; /** * @Description:透支状态类 * @author 马荣荣 * */ public class Redstate extends AccountState { public Redstate(Account acc, double balance) { super(acc, balance); } public void stateCheck() { if(balance >= -1000 && balance < 0){ acc.setsta(new Yellowstate(acc, balance)); }else if(balance >= 0){ acc.setsta(new Greenstate(acc,balance)); } } public void withdraw(double amount) { System.out.println("余额不足!"); System.out.println("当前余额:"+balance); } }
(6)Yellowstate.java:
package shiyan22; /** * @Description:欠费状态类 * @author 马荣荣 * */ public class Yellowstate extends AccountState { public Yellowstate(Account acc, double balance) { super(acc, balance); } public void stateCheck() { if(balance >=0 ){ acc.setsta(new Greenstate(acc,balance)); }else if(balance < -1000){ acc.setsta(new Redstate(acc,balance)); } } }
实现截图:
这篇关于状态模式(java)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南