java 代理 普通代理

534 阅读1分钟

用代码来描述这个代理 直接看代码吧。


package com.boolib.basic.代理;

import java.math.BigDecimal;


abstract class Worker{
	
	
	public abstract void onWork(Work work);
	
	abstract BigDecimal makeMoney(BigDecimal bigDecimal);
	
	abstract BigDecimal costMoney(BigDecimal bigDecimal);
}


/**
 * 演员
 * 
 * @author Administrator
 *
 */
 
class Work{
	
	private String name;
	private BigDecimal reward;
	
	
	public Work(String name, BigDecimal reward) {
		super();
		this.name = name;
		this.reward = reward;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public BigDecimal getReward() {
		return reward;
	}
	public void setReward(BigDecimal reward) {
		this.reward = reward;
	}
	
	
	
}

@SuppressWarnings("")
class Actor extends Worker{

	
	private Substitute substitute;
	
	
	
//  不能让其他人知道我找替身	
//	public Substitute getSubstitute() {
//		return substitute;
//	}
//
//	public void setSubstitute(Substitute substitute) {
//		this.substitute = substitute;
//	}


	/**
	 * 银行卡剩余  
	 */
	private BigDecimal bigDecimal = new BigDecimal(900000000);



	/**
	 * 弄钱啊 , 反正我不管谁给我钱 , 进腰包里就收着
	 */
	BigDecimal makeMoney(BigDecimal bigDecimal) {
		this.bigDecimal.add(bigDecimal);
		return this.bigDecimal;
	}
	
	/**
	 * 花钱 , 自己花就行了
	 * @param bigDecimal
	 */

	
	@Override
	private  BigDecimal costMoney(BigDecimal bigDecimal) {
		this.bigDecimal.subtract(bigDecimal);
		return this.bigDecimal;
	}
	
	@Override
	public void onWork(Work work) {
		
		if(work.getName().equals("跳楼")) {
		
			//log.info("不敢跳 秒怂, 太危险了,钱先收着 找替身");
	
			makeMoney(work.getReward());
			
			BigDecimal bigDecimal = new BigDecimal(10000);
		
			costMoney(bigDecimal);
			
			work.setReward(bigDecimal);
			
			onWork(this.substitute,work);
		}
		
	}
	
	
	private void onWork(Substitute substitute,Work work) {
		substitute.onWork(work);
	}
	
	private void findSubstitute(Substitute substitute) {
		this.substitute = substitute;
	}
	
	
	public void coffeeTime(Substitute substitute) {
		//闲聊
		
		//然后找替身
		findSubstitute(substitute);
	}

 

 

}

/**
 * 替身
 * @author Administrator
 *
 */
class Substitute extends Worker{
	
	
	/**
	 * 银行卡剩余 只够吃泡面了
	 */
	private BigDecimal bigDecimal=new BigDecimal(2000);
	
	
	/**
	 * 获得钱
	 * @param bigDecimal
	 */
	private BigDecimal  makeMoney(BigDecimal bigDecimal) {
		this.bigDecimal.add(this.bigDecimal);
		return this.bigDecimal;
	}
	
	 

	@Override
	public void onWork(Work work) {
		
		if(work.getName().equals("让我去死")){
			// log.info("这活干不了")
			return ;
		}
		this.bigDecimal.add(work.getReward());
		//log.info("我扮演的演员"+work.getName()+"了! ");
		//log.info("找我扮演的演员"+work.getName()+"了! ")
		//没钱赚算了
		//System.out.println("我"+work.getName()+"了");
		//剧本不对,重来
		System.out.println("演员某某某不畏惧风险上演"+work.getName()+"大戏");
	}



	@Override
	private BigDecimal costMoney(BigDecimal bigDecimal) {
		// TODO Auto-generated method stub
		return this.bigDecimal.subtract(bigDecimal);
	}

	 
	
 
}


/**
 * 普通代理
 * 
 * @author Administrator
 *
 */
public class CommonProxy {
		
	public static void main(String[] args) {
		
		Actor actor = new Actor();
		
		Work work  = new Work("跳楼", new BigDecimal(2000000));
		
		actor.coffeeTime(new Substitute());
		
		actor.onWork(work);
		
		
		
	}
}