前言
工廠模式屬於創建型模式中的一種。主要用來創建複雜的對象,簡單對象能夠使用new來創建就不用工廠方法模式來創建了。
工廠模式的實現
(1)創建抽象的產品類
public abstract class Fruit {
public abstract void getProduct();
}
(2)創建具體產品類
public class Apple extends Fruit {
@Override
public void getProduct() {
Log.e("============","蘋果");
}
}
public class Banana extends Fruit {
@Override
public void getProduct() {
Log.e("============","香蕉");
}
}
(3)創建抽象工廠類
public abstract class Factory {
public abstract Fruit getFruit();
}
(4)創建具體工廠類
public class AppleFactory extends Factory {
@Override
public Fruit getFruit() {
return new Apple();
}
}
public class BananaFactory extends Factory {
@Override
public Fruit getFruit() {
return new Banana();
}
}
測試
/**
* 工廠模式的測試
*/
private void testFactory(){
Factory appleFactory=new AppleFactory();
Fruit apple= appleFactory.getFruit();
apple.getProduct();
Factory bananaFactory=new BananaFactory();
Fruit banana=bananaFactory.getFruit();
banana.getProduct();
}
輸出結果:
2020-03-10 11:12:04.685 5648-5648/com.she.javaprojectdemo E/============: 蘋果
2020-03-10 11:12:04.685 5648-5648/com.she.javaprojectdemo E/============: 香蕉
優點
(1)符合開放封閉原則。新增產品時,只需添加相應的具體產品類和相應的工廠子類即可。
(2)符合單一職責原則。每個具體工廠類只負責創建對應的產品。