设计模式-简单工厂模式学习笔记
前言:学习书籍《大话设计模式》
简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
- 优缺点
优点:满足了可维护性
简单工厂模式满足了程序的可维护性,如果直接new对象,那么new对象的代码会分布在程序的各个类的角落里,发生修改或者是需要重构的话,将会是一件很麻烦的事情,简单工厂模式将创建对象的操作抽取到一个工厂类中, 使用一个抽象类作为父类,根据不同的选择来返回不同的对象,使得代码更容易管理,可维护性更高。
缺点:违反了开放-封闭原则
如果新增一种对象,那么简单工厂模式的工厂类中的判断代码中就会多一个分支,发生了修改,违反了设计模式的对修改封闭的原则。
- 代码
类图
一个计算器的demo,拥有加减乘除四个对象,通过OperatorFactory类来根据不同算法选择来返回某一个对象
父类代码
public abstract class Super {
public abstract Double count(Double num1,Double num2);
}
子类代码
public class Add extends Super{
@Override
public Double count(Double num1, Double num2) {
return num1 + num2;
}
}
public class Divide extends Super {
@Override
public Double count(Double num1, Double num2) {
return num1 / num2;
}
}
public class Multiply extends Super{
@Override
public Double count(Double num1, Double num2) {
return num1 * num2;
}
}
public class Subtract extends Super{
@Override
public Double count(Double num1, Double num2) {
return num1 - num2;
}
}
工厂核心代码
public class OperatorFactory {
public Super operator(String operator){
Super s = null;
try{
switch (operator){
case "+":
s = new Add();
break;
case "-":
s = new Subtract();
break;
case "*":
s = new Multiply();
break;
case "/":
s = new Divide();
break;
default:
System.out.println("输入运算符有误");
break;
}
}catch (Exception e){
System.out.println("输入有误"+e.getMessage());
}
return s;
}
}
- 总结
简单工厂模式虽然不完美,但是有它的闪光点,根据场景,灵活使用。

浙公网安备 33010602011771号