用代码来描述这个代理 直接看代码吧。
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);
}
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;
private BigDecimal bigDecimal = new BigDecimal(900000000);
BigDecimal makeMoney(BigDecimal bigDecimal) {
this.bigDecimal.add(bigDecimal);
return this.bigDecimal;
}
@Override
private BigDecimal costMoney(BigDecimal bigDecimal) {
this.bigDecimal.subtract(bigDecimal);
return this.bigDecimal;
}
@Override
public void onWork(Work work) {
if(work.getName().equals("跳楼")) {
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);
}
}
class Substitute extends Worker{
private BigDecimal bigDecimal=new BigDecimal(2000);
private BigDecimal makeMoney(BigDecimal bigDecimal) {
this.bigDecimal.add(this.bigDecimal);
return this.bigDecimal;
}
@Override
public void onWork(Work work) {
if(work.getName().equals("让我去死")){
return ;
}
this.bigDecimal.add(work.getReward());
System.out.println("演员某某某不畏惧风险上演"+work.getName()+"大戏");
}
@Override
private BigDecimal costMoney(BigDecimal bigDecimal) {
return this.bigDecimal.subtract(bigDecimal);
}
}
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);
}
}