java设计模式-简单工厂模式

设计模式分为三大类,创建型模式、结构型模式、行为型模式,简单工厂模式属于创建型模式,那什么是创建型模式呢?简单的来说就是创建对象,如果从面向对象编程角度思考,从它的名字就能知道含义,在现实的世界工厂是制造东西的地方,那么在编程的世界工厂就是生产“对象”的地方。但简单工厂不属于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;
    }   
}

简单工厂模式优缺点:
优点:简单工厂可以跟据客户端给定的特殊信息来生产所需要的类,客户端对于对象的创建细节是不可知的,也没有必要知道,达到消费与生产分离。
缺点:当我们要开发另一种产品,也就是要再增加一个抽象类,以及增加一些它的继承类,那么简单工厂就要增加判断生产哪种产品的实例,这就违背“单一职责”;还有如果我要增加一个乘法运算,就要在简单工厂中增加判断,并且要重新编译工厂类,这违背了“开闭原则”。

                                           -_-没有天才,只有勤奋的天才
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章