package com.main;
public interface Calculator {
int calculate(int input);
}
package com.main;
public class C1 implements Calculator{
@Override
public int calculate(int input) {
// TODO Auto-generated method stub
return input*8;
}
}
package com.main;
public class C2 implements Calculator{
@Override
public int calculate(int input) {
// TODO Auto-generated method stub
return input*input-2;
}
}
package com.main;
public class ContextEnv {
//组合优于继承!!
private Calculator mCalculator;
public int startCalculate(int data) {
if (mCalculator == null) {
mCalculator = new C1();
}
int ret = mCalculator.calculate(data);
return ret;
}
public void setCalculator(Calculator pCalculator) {
mCalculator = pCalculator;
}
}
package com.main;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
ContextEnv lContextEnv = new ContextEnv();
lContextEnv.setCalculator(new C1());
System.err.println(lContextEnv.startCalculate(1000)); // use C1
// calculator.
lContextEnv.setCalculator(new C2());
System.err.println(lContextEnv.startCalculate(1000)); // use C2
// calculator.
}
}