简单工厂:主要是用来创造接口,但是也可以创造抽象类和具体类的实例。
简单工厂什么都能创建,但对于简单工厂可以创建兑现的范围,通常不要太大,建议控制在一个独立的组件级别或者一个模块级别,也就是一个组件或模块简单工厂。
1、定义组件/模块Api
/** * 接口定义,该接口可以通过简单工厂来创建 * @author hp * */ public interface Api { /** * 示意,具体功能方法的定义 * @param str */ public void operation(String str); }
2、定义组件/模块的实现
/** * 接口的具体实现对象 * @author hp * */ class ImplA implements Api{ public void operation(String str) { //实现功能代码,示意一下 System.out.println("ImplA str=="+str); } }
/** * 接口的具体实现对象B * @author hp * */ class ImplB implements Api{ public void operation(String str) { //实现功能的代码,示意一下 System.out.println("ImplB str=="+str); } }
3、建立工厂类
/** * 工厂类,用来创建Api对象 * @author hp * */ public class Factory { /** * 具体创建Api对象的方法 * @param condition 从外部传入的条件 * @return 创建好的Api对象 */ public static Api createApi(int condition) { /* * 应该根据某些条件去选择究竟创建哪一个具体的实现对象 * 这些条件可以从外部传入,也可以从其他途径来获取 * 如果只有一个实现,可以神略条件,因为没有选择的必要 * 示意使用条件 */ Api api=null; if(condition==1) { api=new ImplA(); }else if(condition==2) { api=new ImplB(); } return api; } }
4、客户端测试类
import com.factory.simple.Api; import com.factory.simple.Factory; public class Client { public static void main(String[] args) { Api api = Factory.createApi(1); api.operation("正在使用简单的工厂"); } }