Java工廠模式的簡單樣例
阿新 • • 發佈:2018-12-13
1.抽象的產品類:定義car 交通工具類下:
package factory.simple;
/**
* 抽象產品角色 交通工具介面
*
* @author lilin
*
*/
public interface Car {
/**
* 上班函式
*/
void gotowork();
}
2.定義實際的產品類,總共定義兩個,bike 和bus 分別表示不同的交通工具類
package factory.simple; /** * 具體產品角色,自行車 * * @author lilin * */ public class Bike implements Car { @Override public void gotowork() { System.out.println("騎自行車去上班!"); } }
package factory.simple;
/**
* @author lilin
*
*/
public class Bus implements Car {
@Override
public void gotowork() {
System.out.println("坐公交車去上班!");
}
}
3.抽象的工廠介面定義如下:
/** * */ package factory.factory; import factory.simple.Car; /** * @author lilin * */ public interface ICarFactory { /** * 獲取交通工具 * * @return */ Car getCar(); }
4.具體的工廠子類,分別為每個具體的產品類建立不同的工廠子類:
/**
*
*/
package factory.factory;
import factory.simple.Bike;
import factory.simple.Car;
/**
* @author lilin
*
*/
public class BikeFactory implements ICarFactory {
@Override
public Car getCar() {
return new Bike();
}
}
/** * */ package factory.factory; import factory.simple.Bus; import factory.simple.Car; /** * @author lilin * */ public class BusFactory implements ICarFactory { @Override public Car getCar() { return new Bus(); } }
最後,使用簡單的測試類,來驗證下 不同的工廠能夠產生不同的產品物件:測試類如下:
/**
*
*/
package factory.factory;
import org.testng.annotations.Test;
import factory.simple.Car;
/**
* @author lilin
*
*/
public class TestFactory {
@Test
public void test() {
ICarFactory factory = null;
// bike
factory = new BikeFactory();
Car bike = factory.getCar();
bike.gotowork();
// bus
factory = new BusFactory();
Car bus = factory.getCar();
bus.gotowork();
}
}
列印結果如下:
騎自行車去上班!
坐公交車去上班!
工廠模式,可以理解為:有了很多個工廠方法,自己需要哪一個產品,就呼叫當前產品的工廠方法,獲取相應的具體例項。