当我们不希望向客户端暴露创建对象的逻辑时,工厂模式是个好的选择。工厂模式通过一个聚合了其他不希望被暴露的类的类,在其内部调用其他类的构造函数,将其封装起来,给客户端使用。
举例来讲。我们有车vehicle这个接口,并通过了bus和car类实现了这个接口。当我们建立bus类和car类时,并不想将他们的构造方法暴露给客户端,就可以使用一个factor类,在其内部调用car和bus的构造方法,把这个类给客户端,用户使用他构造car和bus。
public interface vehicle{...}
public class bus implements vehicle{
public bus(...){...}
}
public class car implements vehicle{
public car(...){...}
}
public class carFactor{
public vehicle getVehicle(String type){
if(type == null){
return null;
}else if(type.equals("car"){
return new car(...)
}else if(type.equals("bus"){
return new bus(...)
}else{
...//异常处理
}
}
}