接上一篇“设计模式之单例模式”,本片主要简述简单工厂模式
二、工厂模式
简单工厂模式其实就是一个解耦的过程,当调用接口方(我们称客户端),要使用由接口创建方(服务端)创建的接口实现,同一个父接口下,可能会有不同的接口实现,当客户端使用这些子类实现时,如果全部在客户端进行实例化操作,可能会导致多个客户端的代码耦合,从而使代码变得臃肿,所以这个时候,我们就有了简单工厂模式。在简单工厂里面实例化对象,当服务器端改变子类实现时候,我们可以尽可能的只在简单工厂里面修改实例化的方法,而不用在多个客户端进行大量重复的修改。
下面是一个简单的例子
①提供接口方 :父接口与子类实现
public interface ServerInterface {}
public class Server1 implements ServerInterface {}
public class Server2 implements ServerInterface {}
public class Server3 implements ServerInterface {}
②简单工厂类:
/**
* @Author : WJ
* @Date : 2019/1/18/018 14:50
* <p>
* 注释:
* 简单工厂处理类的实例化,解决客户端代码耦合问题
* (这里额外使用单例模式之枚举类实现对简单工厂类的单例设计)
*/
public enum SimpleFactory {
INSTANCE;
public ServerInterface createServer(int type){
if(type ==1){
return new Server1();
}else if(type == 2){
return new Server2();
}else {
return new Server3();
}
}
}
③客户端使用接口:
public class Client {
public static void main(String[] args) {
ServerInterface server1 =SimpleFactory.INSTANCE.createServer(1);
ServerInterface server2 =SimpleFactory.INSTANCE.createServer(2);
System.out.println(server1);
System.out.println(server2);
}
}
网友评论