package com.cx.bank.manager; import com.cx.bank.model.MoneyBean; //业务层 public class ManagerImpl { MoneyBean mb = new MoneyBean(); //查询当前存款 public double inquiry(){ double money = mb.getMoney(); return money; } //取款 public boolean withdrawals(double money){ if(money <= 0 ){ System.out.println("对不起,您的取款金额需大于0元!"); return false; } double leave = mb.getMoney(); if(money > leave){ System.out.println("对不起,您的存款金额不够!"); return false; }//实现“余额不足”逻辑判断 mb.setMoney(leave - money); System.out.println("取款成功!"); return true; } //存款 public boolean deposit(double money){ if(money <=0 ) { System.out.println("对不起,您的存款金额需大于0元!"); return false; }//实现“存款不能为负”逻辑判断 double leave = mb.getMoney(); mb.setMoney(leave + money); System.out.println("存款成功!"); return true; } //退出系统 public void exitSystem(){ System.out.println("系统已经退出"); System.exit(1); } } 改为但例模式
时间: 2024-02-14 20:11:50 浏览: 81
好的,下面是 ManagerImpl 类的单例模式实现:
```
package com.cx.bank.manager;
import com.cx.bank.model.MoneyBean;
//业务层
public class ManagerImpl {
private static ManagerImpl instance = null;
private MoneyBean mb = new MoneyBean();
private ManagerImpl() {
}
public static ManagerImpl getInstance() {
if (instance == null) {
instance = new ManagerImpl();
}
return instance;
}
//查询当前存款
public double inquiry() {
double money = mb.getMoney();
return money;
}
//取款
public synchronized boolean withdrawals(double money) {
if (money <= 0) {
System.out.println("对不起,您的取款金额需大于0元!");
return false;
}
double leave = mb.getMoney();
if (money > leave) {
System.out.println("对不起,您的存款金额不够!");
return false;
}//实现“余额不足”逻辑判断
mb.setMoney(leave - money);
System.out.println("取款成功!");
return true;
}
//存款
public synchronized boolean deposit(double money) {
if (money <= 0) {
System.out.println("对不起,您的存款金额需大于0元!");
return false;
}//实现“存款不能为负”逻辑判断
double leave = mb.getMoney();
mb.setMoney(leave + money);
System.out.println("存款成功!");
return true;
}
//退出系统
public void exitSystem() {
System.out.println("系统已经退出");
System.exit(1);
}
}
```
在这个实现中,我们使用私有的构造函数和静态的 getInstance() 方法来保证只有一个 ManagerImpl 实例存在。在 withdrawals() 和 deposit() 方法中,我们使用 synchronized 关键字来保证同一时刻只有一个线程访问这些方法,避免了多线程并发访问共享资源的问题。
阅读全文