工厂模式简单地说分为三种,也就是网上经常说的三种:简单工厂模式,工厂模式和抽象工厂模式!
先来说下工厂模式的使用目的,就是根据要求来生成相对应的对象!而生成的不同对象,有着同一个父类,这种情况下,就使用工厂模式。
现在来说下三种工厂模式的区别吧:
首先是简单工厂模式:Factory类直接通过传递的参数来判断生成哪种对象!
下面是例子:
public Car
factory(String carType
, float prize)
throws Exception {
if (carType.equals( "Truck")) return new TruckCar(prize) ;
if (carType.equals( "Bigbus")) return new BigbusCar(prize) ;
if (carType.equals( "Mini")) return new MiniCar(prize) ;
if (carType.equals( "Sports")) return new SportsCar(prize) ;
throw new Exception( "没有这种产品") ;
if (carType.equals( "Truck")) return new TruckCar(prize) ;
if (carType.equals( "Bigbus")) return new BigbusCar(prize) ;
if (carType.equals( "Mini")) return new MiniCar(prize) ;
if (carType.equals( "Sports")) return new SportsCar(prize) ;
throw new Exception( "没有这种产品") ;
}
工厂模式与抽象工厂模式,对比来看!
工厂模式, 一个工厂生产一种对象,每一种对象,都有属于自己的工厂实类
public class SportsCarFactory
implements Factory {
@Override
public Car create( float prize) {
return new SportsCar(prize) ;
}
@Override
public Car create( float prize) {
return new SportsCar(prize) ;
}
}
抽象工厂模式,把生产对象的方法封装在工厂抽象类里面,而工厂类则实现所有生成对象的接口。
public class
CarFactory
implements Factory {
@Override
public TruckCar createTruckCar( float index) {
return new TruckCar(index) ;
}
@Override
public BigbusCar createBigBusCar( float index) {
return new BigbusCar(index) ;
}
@Override
public MiniCar createMiniCar( float index) {
return new MiniCar(index) ;
}
@Override
public SportsCar createSportsCar( float index) {
return new SportsCar(index) ;
}
@Override
public TruckCar createTruckCar( float index) {
return new TruckCar(index) ;
}
@Override
public BigbusCar createBigBusCar( float index) {
return new BigbusCar(index) ;
}
@Override
public MiniCar createMiniCar( float index) {
return new MiniCar(index) ;
}
@Override
public SportsCar createSportsCar( float index) {
return new SportsCar(index) ;
}