文档章节

简单 Proxy 自动提款机应用

指尖铜绿
 指尖铜绿
发布于 2014/06/04 07:26
字数 264
阅读 17
收藏 0

Input输入类:

import java.util.Scanner;

public class Input {
 
  private ProxyAccount account;
  
     public Input(ProxyAccount account) {
   super();
   this.account = account;
  }


 public void startInput() {
  String p = account.enterPIN();
  if(p.equals(account.getPIN())){
  
   Scanner scanner = new Scanner(System.in);
      String c = "a"; 
  while (!c.equals("x")) {   
   System.out.println("Enter");
   System.out.println("   w to withdraw money");
   System.out.println("   d to deposit money");
   System.out.println("   x to quit");
   System.out.print("Choice: ");
   c = scanner.next();
   if (c.equals("w") || c.equals("d")) {
    int amount = 0;
    System.out.print("Amount: ");
    amount = scanner.nextInt();
    if (c.equals("w")) {
     account.withdraw(amount);
     System.out.println("New amount: " + account.getAmount());
    } else if (c.equals("d")) {
     account.deposit(amount);
     System.out.println("New amount: " + account.getAmount());
    }
   }
  }
   }
  else{
   System.out.println("Your password is false!");
    this.startInput();
  }
 }

}

-------------------------------------------------------------------------------------------------------------------------------

RealAccount 实际Subject类:

public class RealAccount implements Account{
 
 private int amount;

 public RealAccount(int amount) {
  super();
  this.amount = amount;
 }

 public void withdraw(int money) {
  amount = amount - money;
 }
 
 public void deposit(int money) {
  amount = amount + money;
 }
 
 public int getAmount() {
  return amount;
 }

}

-------------------------------------------------------------------------------------------------------------------------------

ProxyAccount 代理类:

import java.util.Scanner;

public class ProxyAccount implements Account{

 private Account proxied;
 
 private String PIN;
 
 public ProxyAccount(Account proxied, String PIN) {
  super();
  this.proxied = proxied;
  this.PIN = PIN;
 }
 
 public String getPIN() {
  return PIN;
 }
 
    public String enterPIN(){
 Scanner pin = new Scanner(System.in);
 System.out.print("Please enter your password: ");
 return pin.next();
    }


 public void deposit(int money) {
  proxied.deposit(money);
  
 }

 public int getAmount() {
  return proxied.getAmount();
 }

 public void withdraw(int money) {
  proxied.withdraw(money);
  
 }

 
}

-------------------------------------------------------------------------------------------------------------------------------

Account 接口:

public interface Account {
 
 
 void withdraw(int money);
 
 void deposit(int money);
 
 int getAmount();

}

-------------------------------------------------------------------------------------------------------------------------------

Main 主方法:

public class MainAccount {
 
 public static void main(String[] args) {
  Account account = new RealAccount(5000);  //多态
  ProxyAccount proxyaccount = new ProxyAccount(account,"123456");
  Input input = new Input(proxyaccount);
  input.startInput();
  
 }

}

© 著作权归作者所有

共有 人打赏支持
指尖铜绿
粉丝 1
博文 6
码字总数 352
作品 0
成都
程序员
apache 2.4.12 负载均衡配置

apache 2.4.12 负载均衡配置比较简单,修改httpd.conf文件相关内容即可, 首先修改httpd.conf,启用负载均衡相关模块 LoadModule proxymodule modules/modproxy.so LoadModule proxybalance...

bboss
2015/06/06
0
0
Bloom filter在分布式环境中的应用

Bloom filter在分布式环境中的应用 未命名2017-05-0427 阅读 filter技术分布式 概述 布隆过滤器是一个应用非常广泛的概率型数据结构,一般用于判断一个元素是否存在一个集合中,比如在字处理...

未命名
2017/05/04
0
0
MySQL Proxy实现数据库读写分离

可以将master的数据复制分布到多个slave上,然后可以利用slave来分担master的读压力。那么对于前台应用来说,就要考虑如何将读的压力 分布到多个slave上。如果每个应用都需要来实现读写分离的...

hans汉斯
2010/01/13
0
0
linux mysql proxy 的安装,配置,以及读写分离

linux mysql proxy 的安装,配置,以及读写分离 张映 发表于 2010-03-03 分类目录: mysql 一,mysql proxy是什么,干什么用的 MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy...

daniel-john
2014/07/07
0
0
Key file does not start with a group

MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读...

bengozhong
2016/10/11
43
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周日乱弹 —— 种族不同,禁止交往

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《苏菲小姐》- 鱼果 《苏菲小姐》- 鱼果 手机党少年们想听歌,请使劲儿戳(这里) @貓夏:下大雨 正是睡觉的好时候 临睡前...

小小编辑
今天
226
6
Python 搭建简单服务器

Python动态服务器网页(需要使用WSGI接口),基本实现步骤如下: 1.等待客户端的链接,服务器会收到一个http协议的请求数据报 2.利用正则表达式对这个请求数据报进行解析(请求方式、提取出文...

代码打碟手
今天
1
0
Confluence 6 删除垃圾内容

属性(profile)垃圾 属性垃圾的定义为,一个垃圾用户在 Confluence 创建了用户,但是这个用户在自己的属性页面中添加了垃圾 URL。 如果你有很多垃圾用户在你的系统中创建了属性,你可以使用...

honeymose
今天
1
0
qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部