2023/10/29 每日总结
今天完成了设计模式实验22
实验 22:状态模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解状态模式的动机,掌握该模式的结构;
2、能够利用状态模式解决实际问题。
[实验任务一]:银行账户
用Java代码模拟实现课堂上的“银行账户”的实例,要求编写客户端测试代码模拟用户存款和取款,注意账户对象状态和行为的变化。
源代码
package org.test22; import javafx.scene.media.AudioClip; public class BankAccount{ private State state; public BankAccount(State state) { this.state = state; } public void deposit(double amount) { state.deposit(amount); } public void withdraw(double amount) { if (state instanceof OpenState) { state.withdraw(amount); } else { System.out.println("账户已关闭,不能取款"); } } public State getState() { return this.state; } } package org.test22; public class Client { public static void main(String[] args) { OpenState openState = new OpenState(); ClosedState closedState = new ClosedState(); BankAccount openAccount = new BankAccount(openState); openAccount.deposit(500); // 存款 500 元 openAccount.withdraw(200); // 取款 200 元,余额不足,不能取款 openAccount.withdraw(500); // 取款 500 元,成功取出 300 元,余额为 500 - 300 = 200 元 System.out.println("当前账户余额:" + openAccount.getState().getBalance()); closedState.deposit(5000); } } package org.test22; public class ClosedState extends State{ private double balance=0; @Override public void deposit(double amount) { System.out.println("账户已关闭,不能存款"); } @Override public void withdraw(double amount) { System.out.println("账户已关闭,不能取款"); } @Override public double getBalance() { return this.balance; } } package org.test22; public class OpenState extends State{ private double balance=0; @Override public void deposit(double amount) { System.out.println("存款成功,存款金额:" + amount); balance+=amount; } @Override public void withdraw(double amount) { if (balance-amount>=0) { System.out.println("取款成功,取款金额:" + amount); balance-=amount; } else { System.out.println("余额不足,不能取款"); } } @Override public double getBalance() { return this.balance; } } package org.test22; public abstract class State { public abstract void deposit(double amount); public abstract void withdraw(double amount); public abstract double getBalance(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2022-10-29 继承与多态课后作业
2022-10-29 JAVA项目中的常用的异常处理情况总结
2022-10-29 动手动脑之异常处理
2022-10-29 10月读程序员小工到专家读后感第二篇
2022-10-29 10月读程序员小工到专家读后感第一篇