设计模式分为三大类,创建型模式、结构型模式、行为型模式,简单工厂模式属于创建型模式,那什么是创建型模式呢?简单的来说就是创建对象,如果从面向对象编程角度思考,从它的名字就能知道含义,在现实的世界工厂是制造东西的地方,那么在编程的世界工厂就是生产“对象”的地方。但简单工厂不属于23种GOF设计模式之一。 简单工厂的概念: 1. 简单工厂模式又称为静态工厂方法模式,称为静态工厂是因为它创建对象的方法是静态,因此就不用实例化工厂本身来获取对象。 2. 简单工厂就是定义一个工厂类,然后根据不同的参数变量返回不同对象实例。 拿<<大话设计模式>>里面运算器例子说明,运算器能够执行加法和减法操作,定义一个操作接口,加法操作和减法操作实现操作接口,并且定义一个工厂来产生加法或者减法对象实例。简单工厂模式类图: 简单工厂模式具体实现:
package com.xll.simpleFactory; /** *Created by xll 2016/8/15 */ public class Main { public static void main(String[] args){ Operator operator = SimpleFactory.operator("add"); operator.setNumA(10.0); operator.setNumB(12.0); System.out.println(operator.getResult()); } } abstract class Operator{ public double numA; public double numB; public abstract double getResult(); public void setNumA(double numA) { this.numA = numA; } public void setNumB(double numB) { this.numB = numB; } } class AddOperator extends Operator{ public AddOperator(){ } @Override public double getResult(){ return numA + numB; } } class MinusOperator extends Operator{ public MinusOperator(){ } @Override public double getResult(){ return numA - numB; } } class SimpleFactory{ public static Operator operator(String type){ Operator operator = null; switch(type){ case "add": operator = new AddOperator(); break; case "minus" : operator = new MinusOperator(); break; } return operator; } }简单工厂模式优缺点: 优点:简单工厂可以跟据客户端给定的特殊信息来生产所需要的类,客户端对于对象的创建细节是不可知的,也没有必要知道,达到消费与生产分离。 缺点:当我们要开发另一种产品,也就是要再增加一个抽象类,以及增加一些它的继承类,那么简单工厂就要增加判断生产哪种产品的实例,这就违背“单一职责”;还有如果我要增加一个乘法运算,就要在简单工厂中增加判断,并且要重新编译工厂类,这违背了“开闭原则”。
-_-没有天才,只有勤奋的天才