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

来源:互联网 发布:淘宝运作流程图 编辑:程序博客网 时间:2024/05/22 13:59

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

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

                                           -_-没有天才,只有勤奋的天才
0 0
原创粉丝点击