工厂模式实现了创建者和调用者的分离。创建对象的时候不去关心对象的具体实现。只需要调用生产相关对象的工厂里的方法去得到就可以了,工厂模式具有很高的可扩展性和可维护性。
实现
工厂模式的实现首先需要我们要创建的对象去实现一个共同的接口。比如说,我们需要宝马,奔驰汽车,那么闲定义一个Car接口:
package pattern;
public interface Car {
public void Band();
}
然后让我们需要创建的对象的类去实现这个接口:
package pattern;
public class BMW implements Car{
@Override
public void Band() {
// TODO Auto-generated method stub
System.out.println("This is BMW");
}
}
package pattern;
public class Benz implements Car{
@Override
public void Band() {
// TODO Auto-generated method stub
System.out.println("This is Benz");
}
}
再然后,创建一个根据相应信息返回对应的对象的工厂类
package pattern;
public class CarFactory {
public Car getCar(String band){
if("BMW".equals(band)){
return new BMW();
}else if("Benz".equals(band)){
return new Benz();
}else
return null;
}
}
最后我们如果需要相应品牌的汽车,就不用去和具体的实现类打交道,只需要将我们的要求告诉工厂就可以了:
package pattern;
public class Test {
public static void main(String[] args) {
//创建一个汽车工厂
CarFactory cfactory = new CarFactory();
Car car1 = cfactory.getCar("BMW");
Car car2 = cfactory.getCar("Benz");
car1.Band();
car2.Band();
}
}
执行结果:
This is BMW
This is Benz