简单工厂:主要是用来创造接口,但是也可以创造抽象类和具体类的实例。
简单工厂什么都能创建,但对于简单工厂可以创建兑现的范围,通常不要太大,建议控制在一个独立的组件级别或者一个模块级别,也就是一个组件或模块简单工厂。
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("正在使用简单的工厂");
}
}