工廠模式是初學者比較費解的模式之一,首先講講什麼情景下需要工廠模式
1. 當你的系統工程量達到一定級別,需要new很多相似類的時候,你需要考慮此事是否需要藉助工廠模式。
2. 類改名字或者更改其構造函數參數是很常見的,當系統特別龐大時,這項工程會讓人欲哭無淚。
工廠模式一般有兩種實現方式: 簡單工廠 和 工廠方法
簡單工廠是由3個要素構成: 1 抽象產品角色 2. 具體產品角色 3. 工廠角色
/**
* 抽象產品角色
* @author c_qinshouzhi
*
*/
public interface Car {
public void driveCar();
}
/**
* 具體產品角色
* @author c_qinshouzhi
*
*/
public class Benz implements Car{
@Override
public void driveCar() {
System.out.println("Drive Benz");
}
}
/**
* 工廠類角色
* @author c_qinshouzhi
*
*/
public class CarFactory {
public CarFactory() {
}
public static Car konwCar(String carName){
if(carName.equals("be")){
return new Benz();
}
if(carName.equals("bm")){
return new Bmw();
}
return null;
}
}
是不是簡單易懂? 直接調用就行
Car car = CarFactory.konwCar("bm");
car.driveCar();
因爲簡單工廠並不滿足開閉原則,所以就出現了工廠模式,是由4個要素構成
1. 抽象工廠角色 2.具體工廠角色 3. 抽象產品角色 4. 具體產品角色
換句話說就是將簡單工廠中的工廠角色再次分爲抽象工廠角色和具體工廠角色
/**
* 抽象工廠類
* @author c_qinshouzhi
*
*/
public interface CarDriverFactory {
public Car getCar();
}
/**
* 具體工廠
* @author c_qinshouzhi
*
*/
public class BmwDriverFactory implements CarDriverFactory{
public Car getCar() {
return new Bmw();
}
}
直接調用 CarDriverFactory cf2 = new BmwDriverFactory();
cf2.getCar().driveCar();
不懂加我微信 18221051908