博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单工厂模式
阅读量:5877 次
发布时间:2019-06-19

本文共 1732 字,大约阅读时间需要 5 分钟。

hot3.png

一.定义:

        也可以叫做是静态工厂方法,实质是工厂类根据传递进入的参数,决定生成哪一个类的产品。它是抽象工厂方法模式的一种简化。

二.优点:

        调用者只需要知道要创建何种类型的产品,只需要传递相应的类型或者对应的约束,不必要知道对象是如何创建的,当需要增加新的产品时只需要实现相对应的接口就行,不需要更改其他地方的代码(通过约束来创建时需要更改工厂类中的工厂方法)。

三.缺点:

        每次增加产品都要新增产品类,导致类增加,并且都需要去改动工厂方法中的代码违反了对修改关闭的设计原则

四.uml类图

五.实例:

数字操作符接口    

/** * 计算器运算操作抽象类 * Created by hm on 16/10/17. */public abstract class OperatorInterface {    /**     * 运算操作数     * @param num 可变参数     */   public abstract int operator(int ...num);}

加法操作

/** * 加法运算 * Created by hm on 16/10/17. */public class AddOperator extends OperatorInterface {    @Override    public int operator(int... num) {        int sum = 0;        if(num.length != 0){            for (int a : num) {                sum += a;            }        }        return sum;    }}
/** * 简单工厂方法创建运算操作实例 * Created by apple on 16/10/17. */public class OperatorFactory {    public static final String OPERATOR_TYPE_ADD = "add";    /**     * 通过反射来创建  在android中不推荐使用耗性能     * @param clazz     * @param 
* @return */ public static
T createOperatorByClazz(@NonNull Class
clazz){ try{ return (T) clazz.newInstance();//使用反射耗性能 }catch (Exception e){ return null; } } /** * 通过约束字符串来创建 * @param type * @param
* @return */ public static
T createOperatorByClazz(String type){ OperatorInterface operatorInterface = null; switch (type){ case OPERATOR_TYPE_ADD: operatorInterface = new AddOperator(); break; default: break; } return (T) operatorInterface; }}

转载于:https://my.oschina.net/u/922368/blog/759290

你可能感兴趣的文章
技术跟产品杂谈
查看>>
eclipse中文乱码问题解决方案
查看>>
事件处理程序
查看>>
Sublime Text 3使用手册
查看>>
input file 美化
查看>>
DrawerLayout/FrameLayout/TabLayout/AppBarLayout/NestedScrolling
查看>>
Django之sitemap
查看>>
数据挖据之余弦相识度
查看>>
浅谈fetch
查看>>
js中定时器的使用
查看>>
前端不为人知的一面–前端冷知识集锦 原文地址(http://web.jobbole.com/83473/);...
查看>>
css ul随内容增加高度随之变大
查看>>
重写HttpModule机制
查看>>
PowerDesigner 15.2入门学习 二
查看>>
Android 实现卡片翻转的动画(翻牌动画)
查看>>
ZendStudio快捷键
查看>>
LinkedHashMap 和 LRU算法实现
查看>>
Quartz.NET 配置文件详解
查看>>
PIE SDK Command、Tool、Control的调用和拓展
查看>>
图片无缝轮播
查看>>