设计模式-简单工厂
Posted jiangtao1218
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-简单工厂相关的知识,希望对你有一定的参考价值。
- 什么是工厂:万物皆对象,万物皆产品;工厂生成(new)产品;工程生成基类产品;
- 用户不关心产品生产过程,产品详细的生产过程放在工厂方法里
- 为什么使用工厂方法:在用户类代码中,使用new关键字实例化产品类时,就会导致用户类与产品类强耦合。
- 使用建议
- 工厂方法静态化: 简单工厂类中创建实例的方法,应为静态方法。
- 实例创建配置文件化:实例创建应尽量通过配置文件及反射机制,动态创建,达到能根据某个值,自动判断并创建对应类的实例的目的,这样就可以将庞大的swith语句块消除,同时,实例化部分的修改,只需要修改配置文件即可。
- 简单工厂模块化:一个简单工厂可以定义多个创建实例的静态方法,建议按照不同的功能模块,创建不同的工厂类。因为简单工厂类是一个模块封装提的一部分。
- 优点
- 能够非常简单快捷的实现模块的组件化,组件通过对外公开接口,实现面向接口编程
- 实现了外部调用和具体实现的解耦,增强了系统的健壮性和易维护性。
- 缺点
- 违背开放封闭原则(对新增是开的对修改是封闭的)
- 类图
public interface Product { public void viewColor(); public void viewName(); }
public class ConcreteProduct_A implements Product { @Override public void viewColor() { System.out.println("view ConcreateProduct_A color"); } @Override public void viewName() { System.out.println("view ConcreateProduct_A name"); } }
public class ConcreteProduct_B implements Product { @Override public void viewColor() { System.out.println("view ConcreateProduct_B color"); } @Override public void viewName() { System.out.println("view ConcreateProduct_B name"); } }
public class ProductFactory { public static Product CreateInstance(String type){ Product result=null; switch (type) { case "A": result =new ConcreteProduct_A(); break; case "B": result = new ConcreteProduct_B(); break; } return result; } }
以上是关于设计模式-简单工厂的主要内容,如果未能解决你的问题,请参考以下文章