package com.bamboo;
/**
* 自由扩展工厂模式【复杂】
*/
public class FactoryCalculatorDemo {
public static abstract class Calculator{
private String type;
public Calculator(String type) {
this.type = type;
}
public void calculate(){
System.out.println(" This "+type+" calculate is done");
}
}
public static class PL3Calculator extends Calculator {
public PL3Calculator() {
super("PL3");
}
}
public static class DLTCalculator extends Calculator {
public DLTCalculator() { super("DLT"); }
}
public static class BSKCalculator extends Calculator {
public BSKCalculator() {
super("BSK");
}
}
public static class FTCalculator extends Calculator {
public FTCalculator() {
super("FT");
}
}
public static abstract class CalculatorFactory{
public abstract Calculator createCalculator(String type);
}
public static class NumberLotteryCalculatorFactory extends CalculatorFactory {
@Override
public Calculator createCalculator(String type){
if ("PL3".equals(type))
{ return new PL3Calculator(); }
else if ("DLT".equals(type))
{ return new DLTCalculator(); }
return null;
}
}
public static class JCCalculatorFactory extends CalculatorFactory {
@Override
public Calculator createCalculator(String type){
if ("BSK".equals(type))
{ return new BSKCalculator(); }
else if ("FT".equals(type))
{ return new FTCalculator(); }
return null;
}
}
public static void main(String[] args) {
//调用者,知悉使用的子类
CalculatorFactory calculatorFactory=new NumberLotteryCalculatorFactory();
calculatorFactory.createCalculator("PL3").calculate();
calculatorFactory=new JCCalculatorFactory();
calculatorFactory.createCalculator("FT").calculate();
}
}
自由扩展工厂模式
猜你喜欢
转载自blog.csdn.net/u010138825/article/details/80481915
今日推荐
周排行