前言
工厂模式属于创建型模式中的一种。主要用来创建复杂的对象,简单对象能够使用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)符合单一职责原则。每个具体工厂类只负责创建对应的产品。