简单工厂模式

特点:

  • 提供一种创建对象的最佳方式,在创建对象时不提供对外暴露创建逻辑,并且通过一个共同的接口来指向新创建的对象

  • 定义一个创建对象的接口,让子类来决定实例化哪一个具体的工厂类,延迟到子类去执行

  • 主要解决选择接口的问题

  • 扩展性高,只增加相应工厂类即可,知道名称即可创建对象,屏蔽具体的实现,调用者只关心接口

  • 增加需求时,需要增加具体类与工厂实现,导致类个数成倍增加,增加系统复杂度

  • 只有需要生成复杂类对象时才需要使用工厂模式,且简单工厂模式不属于23种设计模式

PersonAction.java

public interface PersonAction {
public void eat();
}

WomanFactory .java

public class WomanEat implements PersonAction {
@Override
public void eat() {
Log.i("msg","woman is eating");
}
}

ManEat.java

public class ManEat implements PersonAction {
@Override
public void eat() {
Log.i("msg","man is eating");
}
}

Provider.java

public interface Provider {
public PersonAction produce();
}

WomanFactory .java

public class WomanFactory implements Provider {
@Override
public PersonAction produce() {
return new WomanEat();
}
}

ManFactory.java

public class ManFactory implements Provider {
@Override
public PersonAction produce() {
return new ManEat();
}
}

具体使用如下:

ManFactory manFactory = new ManFactory();
PersonAction action = manFactory.produce();
action.eat();