简单工厂的定义
提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类、也可以是具体的类。
简单工厂解决问题的思路
为了不让模块外部知道模块内部的具体实现,所以干脆新建一个类,在这个类里创建接口,然后把建好的接口返回给客户端。把这个类就称为简单工厂(Factory)。
简单工厂的结构与说明
简单工厂的结构示意图.png- Api:定义客户所需要的功能接口
- Impl:Api的具体实现类。
- Factory:工厂类,选择合适的实现类来创建Api接口对象。
- Client:客户端,通过Factory来获取Api接口对象。
简单工厂调用顺序示意图
简单工厂调用顺序示意图.png简单工厂实例代码
/**
* 定义接口,可以通过简单工厂来实现
*/
public interface Api {
public void operation(String s);
}
/**
* 接口的具体实现类A
*/
public class ImplApiA implements Api{
@Override
public void operation(String s) {
System.out.println("A s:" + s);
}
}
/**
* 接口的具体实现类B
*/
public class ImplApiB implements Api{
@Override
public void operation(String s) {
System.out.println("B s:" + s);
}
}
/**
* 工厂类,用来创建Api对象
*/
public class Factory {
/**
* 创建具体Api对象的方法
* @param condition
* @return
*/
public static Api createApi(int condition){
Api api = null;
if (condition == 1){
api = new ImplApiA();
}else {
api = new ImplApiB();
}
return api;
}
}
/**
* 客户端,使用Api接口
*/
public class Client {
public static void main(String[] args) {
Api api = Factory.createApi(1);
api.operation("正在使用简单工厂");
}
}
网友评论