今天开始,想把设计模式看看,了解下设计过程中需要注意哪些细节,由于水平有限吧,仅作为学习笔记使用(参考研磨设计模式书)。
简单工厂通常就是提供给调用方使用,用来创建某一接口对应的某个实现类的实例。处于接口和实现类这一边,知道接口的具体实现细节。
举例说明:
接口Api,提供方法sayHello
interface Api {
public void sayHello();
}
实现类1:
public class Impl1 implements Api {
public void sayHello() {
System.out.println("hello,实现类1");
}
}
public class Impl2 implements Api {
public void sayHello() {
System.out.println("hello,实现类2");
}
}
工厂类:
public class ApiFactory {
public static Api getApi(int type) {
Api api = null;
if (type == 1) {
api = new Impl1();
} else if (type == 2) {
api = new Impl2();
}
return api;
}
}
public class Client {
public static void main(String[] args) {
Api api = ApiFactory.getApi(1);
api.sayHello();
}
}
以上是通过类型type去获取实例,还有根据配置文件去获取实例的(暂不赘述)。
简单工厂优缺点:
1、帮助封装;
2、解耦
缺点:
1、稍微的增加了客户端的复杂度;
2、不方便扩展子工厂
简单工厂命名建议:
类命名建议为“模块名称+Factory”,比如用户模块的工厂就称为UserFactory。
方法名称通常为“get+接口名称”,或者“create+接口名称”,比如有一个接口名称叫“UserEbi”,那么方法名称通常为getUserEbi或者createUserEbi。