JAVA设计模式之简单工厂

tech2022-09-15  96

简单工厂

不是标准的设计模式,但是经常使用。

定义

提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类、具体类

public interface Api{ public void operation(); } /*----------文件分割-------------*/ public class Api1 implements Api{ @Override public void operation(){ System.out.println("api实现1方式"); } } /*----------文件分割-------------*/ public class Api2 implements Api{ @Override public void operation(){ System.out.println("api实现2方式"); } } /*----------文件分割-------------*/ //可以添加更多的api实现类

简单工厂解决方案

public class Factory{ public static Api createApi(String key){ Api api = null; if("1".equals(key)){ api = new Api1(); } if("2".equals(key)){ api = new Aip2(); } /*...在工厂中提供更多新创建的实现类模板 */ return api; } } public Class Client{ public static void main(String []args){ //工厂中添加和删除模板不影响客户端的实现 Api api = Factory.createApi("1"); api.operation(); } }

不使用简单工厂解决方案

public Class Client{ public static void main(String []args){ //Api api = Factory.createApi("1"); Api api = new Api1(); //Api api = Factory.createApi("2"); Api api = new Api2(); api.operation(); } }

认识简单工厂

1、简单工厂的功能

可以用来创建接口、抽象类或普通类的实例

2、静态工厂

通常把简单工厂实现成工具类,也称为静态工厂

3、万能工厂

理论上可以创建任何对象,所有称为万能工厂

创建对象范围控制在独立的组件级别或模块级别

命名建议

1、类名 “模块名称+Factory”

2、方法名称“get/create+接口名称”

写法

方法内部主要实现的功能是"选择合适的实现类"创建实例–参数来源于client

可配置的简单工厂–参数来源于配置文件

优缺点

帮助封装解耦可能增加客户端的复杂度不方便扩展子工厂

本章节附带视频已上传

最新回复(0)