文档章节

简单 Proxy 自动提款机应用

指尖铜绿
 指尖铜绿
发布于 2014/06/04 07:26
字数 264
阅读 19
收藏 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
MySQL Proxy实现数据库读写分离

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

hans汉斯
2010/01/13
701
0
Bloom filter在分布式环境中的应用

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

未命名
2017/05/04
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

没有更多内容

加载失败,请刷新页面

加载更多

网络编程

第14天 网络编程 今日内容介绍  网络通信协议  UDP通信  TCP通信 今日学习目标  能够辨别UDP和TCP协议特点  能够说出UDP协议下两个常用类名称  能够说出TCP协议下两个常用类名称...

stars永恒
32分钟前
0
0
二进制相关

二进制 众所周知计算机使用的是二进制,数字的二进制是如何表示的呢? 实际就是逢二进一。比如 2 用二进制就是 10。那么根据此可以推算出 5的二进制等于 10*10+1 即为 101。 在计算机中,负数以...

NotFound403
昨天
2
0
day22:

1、写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务: 1)使用格式:getinterface.sh [-i interface | -I ip] 2)当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项...

芬野de博客
昨天
2
0
Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注。虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭借阿里中间件团队的背景,还是得到不少...

程序猿DD
昨天
4
0
Java并发编程:深入剖析ThreadLocal

ThreadLocal 的理解 ThreadLocal,很多地方叫线程本地变量,或线程本地存储。ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。===》解决的问题是线程间...

细节探索者
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部