简单工厂模式:
简介:
简单工厂模式又名静态工厂方法模式,是所有工厂模式中最简单的一个,它定义一个具体的工厂类来负责创建所有类的对象并初始化创建的对象,它主要由3部分组成:工厂类、抽象类、实现抽象类的具体类,然后通过客户端调用工厂类创建相应的对象。
注意:简单工厂模式不属于GoF总结的23种设计模式,它是相当于初学java的HelloWorld案例,帮助初学者了解设计模式,增长信心的一个设计模式。
使用步骤:
由上图分析得:
1. 创建 定义具体产品的公共接口;
2. 创建具体产品类(继承公共接口类) & 定义生产的具体产品;
3. 创建工厂类,通过创建静态方法根据传入不同参数从而创建不同具体产品类的实例;
4. 外界通过调用工厂类的静态方法,传入不同参数从而创建不同具体产品类的实例
实例讲解:
public interface Api {
/**
* 具体的功能实现
* @param s:需要的参数
*/
public void operation(String s);
}
public class ImplA implements Api{
@Override
public void operation(String s) {
// TODO Auto-generated method stub
System.out.println("ImplA s ==" + s);
}
}
public class ImplB implements Api{
@Override
public void operation(String s) {
// TODO Auto-generated method stub
System.out.println("ImplB ==" + s);
}
}
public class SimpleFactory {
/**
* 具体创造Api对象的方法
* @param condition:从外部传入的选择条件
* @return :创造好的Api对象
*/
public static Api createApi(int condition){
//根据某些条件去选择究竟创建哪一个具体的实现对象
//这些条件可以从外部传入,也可以从其他途径获取
//如果只有一个实现,可以省略,因为没有选择的必要
Api api = null;
if(condition == 1){
api = new ImplA();
}else{
api = new ImplB();
}
return api;
}
}
public class Client {
public static void main(String[] args){
//通过简单工厂获取对象
Api api = SimpleFactory.createApi(1);
api.operation("简单工厂");
}
}
简单工厂的本质是:工厂类负责选择但是并不负责实现具体的功能
何时选择简单工厂呢?
1.如果想完全封装隔离具体实现,让外部只能通过接口
来操作封装体,那么可以选用简单工厂,让客户端通过工厂来获取相应的接口,而无须关心具体实现
2.如果想要把对外创建对象的职责集中管理和控制,可以
选用简单工厂,一个简单工厂可以创建很多的,不相关的
对象,可以把对外创建对象的职责集中到一个简单工厂来,从而实现集中管理和控制