工厂模式:
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,创建过程延迟到子类进行
实例:
一个程序,在两个企业使用,但是这两企业使用了不同的服务器;
如何使得同一段程序不需要修改代码就能兼容操作不同服务器呢?
方案:
建立接口Server定义好访问接口, AServer、BServer实现接口,具体实现时根据参数确定具体实现选择哪个实现类;
public interface Server {
void show();
}
public class AServer implements Server{
@Override
public void show() {
System.out.println("this is AServer");
}
}
public class BServer implements Server{
@Override
public void show() {
System.out.println("this is BServer");
}
}
public static void main(String[] args) {
//实际使用时,serverName根据服务器不同而不同
String serverName = "A"; //或者"b"
Server server;
switch(serverName){
case "A": server= getServer(AServer.class); break;
case "B": server= getServer(BServer.class); break;
default : server= getServer(AServer.class); break;
}
server.show();
}
public static Server getServer(Class<? extends Server> clazz) {
try {
return clazz.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}