研磨设计模式--简单工厂
作者:互联网
简单工厂模式的定义:
提供一个创建对象实例的功能,而无需关心其具体实现,被创建实例的类型可以是接口、抽象类,也可以是具体的类。
将要创建的类:
Api:定义客户所需要的功能接口。
Impl:具体实现Api的实现类。
Impl2:具体实现Api的实现类。
Factory:工厂,选择合适的实现类,来创建Api接口对象。
Client:客户端,通过Factory来回去Api接口对象,然后面向Api接口编程。
/**
* 接口的定义,该接口可以通过简单工厂来创建
*/
public interface Api {
void test(String s);
}
public class Impl implements Api{
@Override
public void test(String s) {
// 实现功能的代码
System.out.println("Impl s= " + s);
}
}
public class Impl2 implements Api{
@Override
public void test(String s) {
System.out.println("Impl2 s= " + s);
}
}
/**
* 工厂类,用来创建Api对象
*/
@Slf4j
public class Factory {
// 方式1
// public static Api createApi(Integer type) {
// Api api = null;
// if (type == 1) {
// return new Impl();
// } else if (type == 2) {
// return new Impl2();
// }
// return api;
// }
public static Api createApi(Class cla) {
Api api = null;
try {
api = (Api) cla.newInstance();
} catch (Exception e){
log.info("Exception:", e);
}
return api;
}
}
/**
* 客户端
*/
public class Client {
// 方式1
// public static void main(String[] args) {
// Api api = Factory.createApi(2);
// api.test1("正在使用简单工厂");
// }
public static void main(String[] args) {
Api api = Factory.createApi(Impl2.class);
api.test("正在使用简单工厂");
}
}
简单工厂模式优点:
帮助封装:简单工厂虽然很简单,但是非常友好地帮助我们实现了组建的封装,让组建外部能真正的面向接口编程
解耦:通过简单功能,实现了客户端和具体实现类的解耦
简单工厂模式缺点:
可能增加客户端的负责度
不方便扩展子工厂
何时选择简单工厂模式:
如果想要完全封装隔离具体实现,让外部只能通过接口来操作封装体,可以选择简单工厂。
如果想要把对外创建对象的职责集中管理和控制,可以选择简单工厂。
标签:--,简单,接口,工厂,api,研磨,Api,设计模式,public 来源: https://blog.csdn.net/qq_39164603/article/details/121548729