简单工厂:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口,抽象类,也可以是具体的类
Api.class
package pattern.simpleFactory;
public interface Api {
public void test();
}
ApiImpl.class
package pattern.simpleFactory;
public class ApiImpl implements Api{
@Override
public void test() {
System.out.println("hello world");
}
}
SimpleFactory.class
package pattern.simpleFactory;
public class SimpleFactory {
public static Api newInstance(){
return new ApiImpl();
}
}
Client.class
package pattern.simpleFactory;
public class Client {
public static void main(String[] args) {
Api api = SimpleFactory.newInstance();
api.test();
}
}
何时选择简单工厂:
1、如果想要完全封装隔离具体实现,让外部只能通过接口来操作封装类,那么可以选择简单工厂,让客户端通过工厂来获取相应的接口,而无须关心具体的实现
2、如果想要把对外创建对象的职责集中管理和控制,可以选择简单工厂,一个简单工厂可以创建很多的、不相关的对象,可以把对外创建对象的职责集中到一个简单工厂来,从而实现集中管理和控制