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; } }
简单工厂模式优缺点:
优点:简单工厂可以跟据客户端给定的特殊信息来生产所需要的类,客户端对于对象的创建细节是不可知的,也没有必要知道,达到消费与生产分离。
缺点:当我们要开发另一种产品,也就是要再增加一个抽象类,以及增加一些它的继承类,那么简单工厂就要增加判断生产哪种产品的实例,这就违背“单一职责”;还有如果我要增加一个乘法运算,就要在简单工厂中增加判断,并且要重新编译工厂类,这违背了“开闭原则”。
-_-没有天才,只有勤奋的天才
- java 简单工厂设计模式
- JAVA设计模式--简单工厂
- Java简单工厂设计模式
- Java设计模式---简单工厂
- Java设计模式---简单工厂
- java简单工厂设计模式
- java设计模式--简单工厂
- java设计模式----简单工厂
- java简单工厂设计模式
- java--简单工厂设计模式
- java简单工厂设计模式
- java简单工厂设计模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- JAVA设计模式 — 简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- Gym 100851F Froggy Ford(dijkstra)
- Maven使用
- UVA458 The Decoder
- HDU 1012 u Calculate e 水题
- JavaScript toFixed() 方法
- java设计模式-简单工厂模式
- 对得起自己!
- JZOJ 2555【NOIP2011模拟9.7】雾雨魔理沙 几何计算&动态规划
- Linux虚拟文件系统小结
- 网络开发技术基础听课笔记
- 【01背包】HDU2602-Bone Collcetor & POJ3624-Charm Bracelet(模板)
- Spark内存管理模型
- Android VideoView播放 项目中的 视频文件 自动横屏 全屏播放
- flex--移动端布局神器