设计模式学习之工厂模式实例解析,设计模式实例
分享于 点击 34027 次 点评:53
设计模式学习之工厂模式实例解析,设计模式实例
简介
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
工厂模式和简单工厂的区别
我们在简单工厂中可以发现,在我们需要添加一个新的工厂的时候需要修改原来的选择分支,这违背了类的开放性和封闭性原则,所以对简单工厂进一步抽象可得工厂模式。
简单工厂链接
工厂模式模块(Demo:计算器)
运算类
public abstract class Operation { public double number_A = 0; public double number_B = 0; public abstract double GetResult(); } class OperationAdd extends Operation{ @Override public double GetResult() { return number_A+number_B; } } class OperationSub extends Operation{ @Override public double GetResult() { return number_A-number_B; } } class OperationMul extends Operation{ @Override public double GetResult() { return number_A*number_B; } } class OperationDiv extends Operation{ @Override public double GetResult() { if(number_B==0) { System.out.println("被除数不能为0"); return -1; } return number_A/number_B; } }
工厂接口
public interface Factory { public Operation GetOperation(); }
工厂实现
class OperationAddFactory implements Factory{ @Override public Operation GetOperation() { return new OperationAdd(); } } class OperationDivFactory implements Factory{ @Override public Operation GetOperation() { return new OperationDiv(); } } class OperationMulFactory implements Factory{ @Override public Operation GetOperation() { return new OperationMul(); } } class OperationSubFactory implements Factory{ @Override public Operation GetOperation() { return new OperationSub(); } }
使用方法
public class Main { public static void main(String[] args) { OperationAddFactory operationAddFactory = new OperationAddFactory(); Operation operation = operationAddFactory.GetOperation(); operation.number_A=2; operation.number_B=1; System.out.println(operation.GetResult()); } }
可以看出其与简单工厂的区别就在于取消了分支,而是选用了新创建一个类,这种方法虽然加大了开发量,但是提高了程序的可维护性。
用户点评