简单工厂模式:
工厂类负责创建的对象比较少,对于对象的创建不关心,一般在简单的场景下使用。
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
1 public abstract class Animal { 2 public abstract void sayHello(); 3 }
1 public class Cat extends Animal{ 2 @Override 3 public void sayHello() { 4 System.out.println("sayHello--Cat"); 5 } 6 }
1 public class Dog extends Animal { 2 @Override 3 public void sayHello() { 4 System.out.println("sayHello--Dog"); 5 } 6 }
1 public class AnimalFactory { 2 /** 3 * 工厂方法:根据接收到的要哪个对象的类型再决定创建对应的对象 4 * @param animalName 动物类型 5 * @return 对应的动物类对象 6 */ 7 public static Animal createAnimal(String animalType) { 8 Animal animal = null; 9 switch (animalType) { 10 case "cat": 11 animal = new Cat(); 12 break; 13 case "dog": 14 animal = new Dog(); 15 break; 16 } 17 return animal; 18 } 19 }
1 public class AnimalTest { 2 public static void main(String[] args) { 3 Animal animal = null; 4 //上溯造型 5 animal = AnimalFactory.createAnimal("dog");//返回dog对象 6 animal.sayHello();//结果:sayHello--Dog 7 //上溯造型 8 animal = AnimalFactory.createAnimal("cat");//返回dog对象 9 animal.sayHello();//结果:sayHello--Cat 10 } 11 }
UML图: