人生,唯有锻炼与读书不能辜负
工厂模式:
区别于简单工厂模式
1、简单工厂模式中工厂类有逻辑代码,根据类型来创建不同的对象
2、工厂模式就是把工厂类进行封装解耦,抽象出工厂类,然后集成创建不用的工厂类,然后生成不同的对象
举个例子:
我是一个实业老板,最开始我有一个厂子,厂子里有几个不同的生产线,你需要什么产品,告诉我,我通过不同的生产线来给你生产,
但是随着业务的增多以及新业务的上线,厂子越来越大,管理就是个问题,每一次新业务上线都是整个厂子进行。
为了解决这个问题,我成立了集团,下属管理多个厂子,每个厂子管理一条或者几条生产线,形成了金字塔的管理模式,
这样的话,未来集团的发展就很清晰,新增业务或者旧有业务增加生产线就很独立,不会对其他工厂业务产生影响了。
类UML图如下:
具体代码:
AbstractOperation代码:
public abstract class AbstractOperation {
private double numA = 0;
private double numB = 0;
public abstract double getResult();
public double getNumA() {
return numA;
}
public void setNumA(double numA) {
this.numA = numA;
}
public double getNumB() {
return numB;
}
public void setNumB(double numB) {
this.numB = numB;
}
}
OperationAdd代码:
public class OperationAdd extends AbstractOperation {
@Override
public double getResult() {
return getNumA()+getNumB();
}
}
OperationSub代码:
public class OperationSub extends AbstractOperation {
@Override
public double getResult() {
return getNumA()-getNumB();
}
}
AbstractFactory代码:
public abstract class AbstractFactory {
public abstract AbstractOperation getOperation();
}
FactoryAdd代码:
public class FactoryAdd extends AbstractFactory {
@Override
public AbstractOperation getOperation() {
return new OperationAdd();
}
}
FactorySub代码:
public class FactorySub extends AbstractFactory {
@Override
public AbstractOperation getOperation() {
return new OperationSub();
}
}
测试代码:
public class Main {
public static void main(String[] args) {
AbstractFactory factory = new FactoryAdd();
AbstractOperation operation = factory.getOperation();
operation.setNumA(1);
operation.setNumB(2);
System.out.println(operation.getResult());
}
}