Java设计模式(1)——创建型模式之简单工厂模式(Simple Factory)
2017-10-25 23:10
459 查看
设计模式系列参考:
http://www.cnblogs.com/Coda/p/4279688.html
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。
工厂模式可以分为三类:
1)简单工厂模式(Simple Factory)
2)工厂方法模式(Factory Method)
3)抽象工厂模式(Abstract Factory)
直接看背景代码
外部通过静态工厂方法,提供类型即可创建相关的对象!——一般都使用静态的方法,避免创建工厂的繁琐
// 根据阿里规范提示,这里出现了“dog”这样的魔法值!
循环使用对象
简单工厂每次都是new一个新的对象,如果业务逻辑允许,可以通过类似“单例模式”中的方式,循环使用创建的对象。——但是单例并不是简单工厂的退化,它是自身的工厂,并且构造器是私有的(防止外部创建对象)
优缺点
创建与使用的责任划分;
违反“开闭原则”,难以扩展;工厂类作为“上帝类”负责了所有对象的创建,一旦工厂无法正常工作,将产生巨大影响!
http://www.cnblogs.com/Coda/p/4279688.html
一、概述
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。
工厂模式可以分为三类:
1)简单工厂模式(Simple Factory)
2)工厂方法模式(Factory Method)
3)抽象工厂模式(Abstract Factory)
二、实践
核心就是只要实现了统一接口(可以是标识性接口)(一般是实现了同一接口),把返回值(或者参数)进行抽象即可!直接看背景代码
/** * 动物接口 * 作者: Administrator * 日期: 2017/10/25 **/ public interface Animal { void run(); } /** * 动物实现类——小狗 * 作者: Administrator * 日期: 2017/10/25 **/ public class Dog implements Animal{ @Override public void run() { System.out.println("dog run..."); } } /** * 动物实现类——小猫 * 作者: Administrator * 日期: 2017/10/25 **/ public class Cat implements Animal{ @Override public void run() { System.out.println("cat run..."); } }
外部通过静态工厂方法,提供类型即可创建相关的对象!——一般都使用静态的方法,避免创建工厂的繁琐
public static Animal createAnimal(String type) { if ("dog".equalsIgnoreCase(type)) { return new Dog(); } else if ("cat".equalsIgnoreCase(type)) { return new Cat(); } else { System.out.println("找不到类型!"); return null; } }
// 根据阿里规范提示,这里出现了“dog”这样的魔法值!
三、改进与思考
改进为使用反射创建:package com.roc.factory; /** * 简单工厂放射实现 * @author liaowp * */ public class SampleFactory1 { public static Human makeHuman(Class c){ Human human = null; try { human = (Human) Class.forName(c.getName()).newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block System.out.println("不支持抽象类或接口"); e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("没有足够权限,即不能访问私有对象"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block System.out.println("类不存在"); e.printStackTrace(); } return human; } }
循环使用对象
简单工厂每次都是new一个新的对象,如果业务逻辑允许,可以通过类似“单例模式”中的方式,循环使用创建的对象。——但是单例并不是简单工厂的退化,它是自身的工厂,并且构造器是私有的(防止外部创建对象)
优缺点
创建与使用的责任划分;
违反“开闭原则”,难以扩展;工厂类作为“上帝类”负责了所有对象的创建,一旦工厂无法正常工作,将产生巨大影响!
相关文章推荐
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 简单工厂模式(Simple Factory Pattern) - Java实现
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- 设计模式(创建型)之简单工厂模式(Simple Factory Pattern)
- java设计模式(1):简单工厂模式(Simple Factory)
- java设计模式(1):简单工厂模式(Simple Factory)
- Java设计模式--简单工厂模式【Simple Factory Pattern】
- java设计模式---简单工厂模式(Simple Factory)
- 【JAVA设计模式】简单工厂模式(Simple Factory Pattern)
- Java设计模式 - 简单工厂模式(Simple Factory)
- Java设计模式:简单工厂模式(Simple Factory Pattern)
- Java设计模式 -- 简单工厂模式(SimpleFactory)
- JAVA设计模式之 简单工厂模式【Simple Factory Pattern】
- java设计模式——简单工厂模式(Simple Factory Pattern)
- 三.创建型设计模式——Simple Factory Pattern(简单工厂模式)
- 设计模式 (四)——简单工厂模式(Simple Factory,创建型)
- 设计模式学习笔记--简单工厂模式(Simple Factory Pattern)【创建型模式】
- 浅谈 java 设计模式--简单工厂模式(Simple Factory pattern)
- Java设计模式之简单工厂模式(Simple Factory)
- 设计模式之简单工厂模式(SimpleFactory)