四. 状态模式

一.内容说明

某银行系统定义的账户有三种状态:
(1)如果账户中余额大于等于0,此时账户的状态为绿色,即正常状态,表示既可以向该账户存款,也可以从该账户取款。
(2)如果账户中余额小于0,并且大于等于-1000,则账户的状态为黄色,即欠费状态,此时既可以向该账户存款也可以从该账户取款。
(3)如果账户中余额小于-1000,那么账户的状态为红色,即透支状态,此时用户只能向该账户存款,不能再从中取款。
现在用状态模式来实现状态的转换问题,用户只需要执行简单的存款和取款操作,系统根据余额数量自动转换到相应的状态。

二.设计类图

在这里插入图片描述

三.全部类代码

1.环境类Account(银行账户类)

public class Account {
   
    private AccountState state;
    private String owner;
    public Account(String owner, double init){
   
        this.owner = owner;
        System.out.println(this.owner + "开户,初始账户为" + init);
        System.out.println("----------------------");
        this.state = new GreenState(init, this);
    }
    public void setState(AccountState state){
   
        this.state = state;
    }
    public void deposit(double amount){
   
        state.deposit(amount);
    }
    public String getOwner(){
   
        return this.owner;
    }
    public void withdraw(double amount){
   
        state.withdraw(amount);
    }
}

Account类是一个环境类,它是拥有状态的对象,他维持了一个抽象状态的引用,并且可以通过其setState()方法设置状态。在Account类的构造函数中定义了初始状态,在其业务方法中可以调用定义在状态类中的业务方法。

2.抽象状态类AccountState(账户状态类)

 public abstract class AccountState {
   
    protected Account acc;
    protected double balance;
    public abstract void stateCheck();
    public void deposit
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值