什么是工厂模式
-
工厂模式,是java中最常使用的设计模式之一,工厂模式,是一种创建对象的方式,他对外提供了一个接口,客户端可以使用这个接口来创建对象,这样创建对象,不会暴露我们内部的创建逻辑,从而保证了安全性。
-
需要解决的问题
- 如何设计接口?
- 如何根据不同的条件去初始化不同的类
工厂模式的优缺点
- 优点:
- 用户想创建一个对象,只需要知道这个对象的名称
- 易扩展,想要增加一个新的类型的对象,只需要扩展一个工厂类
- 调用者只关心接口,不会关系底层的设计逻辑
- 缺点
- 每增加一个新的类型的对象,都要扩展一个对象类和对象工厂,这样整个系统中的类直线上升,这样会影响到系统的复杂性。
简单的代码实现
- step1:创建Animal接口
public interface Animal { void shouting(); }
- 创建具体的动物去实现接口
public class Cat implements Animal{ @Override public void shouting() { System.out.println("喵喵喵~"); } }
public class Dog implements Animal{ @Override public void shouting() { System.out.println("汪汪汪~"); } }
public class Chick implements Animal{ @Override public void shouting() { System.out.println("鸡你太美,baby~"); } }
- step3:创建一个工厂,这个工厂可以基于用户传递的条件来生成具体的实体类
public class AnimalFactory { //下面这个方法用于接受条件并判断生成哪个实体类 public Animal makeAnimal(String animal){ if (animal == null){ return null; } if (animal.equalsIgnoreCase("CAT")){ return new Cat(); }else if (animal.equalsIgnoreCase("Dog")){ return new Dog(); }else if (animal.equalsIgnoreCase("Chick")){ return new Chick(); } return null; } }
- Step4:接下来就可以使用刚刚的动物工厂去创建具体的动物实体类辣
public class TestFactory { public static void main(String[] args) { AnimalFactory factory = new AnimalFactory(); //获取Cat Animal cat = factory.makeAnimal("cat"); cat.shouting();; //获取Dog Animal dog = factory.makeAnimal("dog"); dog.shouting(); //获取Chick Animal chick = factory.makeAnimal("chick"); chick.shouting(); } }