定义:简单工厂模式就是根据传入的参数不同,工厂类返回不同的实例,不同实例具有共同的父类。
- 我们定义一个水果interface,其中定义一个方法,获取水果名。
public interface Fruit{ void getName(); }
- 定义苹果类以及香蕉类:
public class Apple implements Fruit{ private String name; public Apple(String name) { this.name = name; } @Override public void getName() { Log.w("打印","双截棍"+name); } } public class Banana implements Fruit { private String name; public Banana(String name) { this.name = name; } @Override public void getName() { Log.w("打印","周杰伦"+name); } }
- 定义工厂类:
public class FruitFactory { public static final int BANANA = 0; public static final int APPLE = 1; public static Fruit getFruit(int type){ switch (type){ case BANANA: return new Banana("Banana"); case APPLE: return new Apple("Apple"); } return null; } }
- 调用工厂类:
打印:Fruit fruit = FruitFactory.getFruit(FruitFactory.BANANA); fruit.getName();
W/打印: 周杰伦Banana
总结简单工厂模式的好处:
- 客户不需要关注Apple以及Banana类是怎么创建的。
- 客户不需要关注getName是怎么获取到水果名字的。
- 客户端代码简洁。
缺点:
- 违背了开闭原则。