java设计模式之--工厂方法模式 人生,唯有锻炼与读书不能辜负


工厂模式:
区别于简单工厂模式
1、简单工厂模式中工厂类有逻辑代码,根据类型来创建不同的对象
2、工厂模式就是把工厂类进行封装解耦,抽象出工厂类,然后集成创建不用的工厂类,然后生成不同的对象

举个例子:
  我是一个实业老板,最开始我有一个厂子,厂子里有几个不同的生产线,你需要什么产品,告诉我,我通过不同的生产线来给你生产,
但是随着业务的增多以及新业务的上线,厂子越来越大,管理就是个问题,每一次新业务上线都是整个厂子进行。
  为了解决这个问题,我成立了集团,下属管理多个厂子,每个厂子管理一条或者几条生产线,形成了金字塔的管理模式,
这样的话,未来集团的发展就很清晰,新增业务或者旧有业务增加生产线就很独立,不会对其他工厂业务产生影响了。

类UML图如下:

java设计模式之--工厂方法模式
人生,唯有锻炼与读书不能辜负


  具体代码:
  
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());
}

}