定义一个创建对象的接口,让字类决定实例化哪个类。工厂方法使一个类的实例化延期到字类。
简单工厂 和 工厂模式比较:
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
缺点:若新增哪个实例类,都需要对工厂中的逻辑做修改。
UML:
JAVA:
public class FactoryText {
public static void main(String[] args) {
IFactory iFactory = new AddFactory();
}
}
interface IFactory{
public abstract Operation createOperaction();
}
class AddFactory implements IFactory{
@Override
public Operation createOperaction() {
return new OperationAdd();
}
}
abstract class Operation{
private double numberA = 0;
private double numberB = 0;
public abstract double getResult();
public double getNumberA() {return numberA;}
public void setNumberA(double numberA) {this.numberA = numberA;}
public double getNumberB() {return numberB;}
public void setNumberB(double numberB) {this.numberB = numberB;}
}
class OperationAdd extends Operation {
@Override
public double getResult() {
return getNumberA()+getNumberB();
}
}