Java设计模式-3.简单工厂模式

    技术2022-07-11  96

    定义一个具体的工厂类负责创建一些类的实例

    优点:客户端不需要负责对象的创建,从而明确各个类的职责

    缺点:这个静态工厂类负责所有对象的创建,如果有新的对象的增加,或者某些对象的创建方式不同,就需要不断修改工厂类,不利于后期维护

    package day25; public abstract class Animal { public abstract void eat(); } /** * */ package day25; /** * @author Dk * */ public class Dog extends Animal { @Override public void eat() { System.out.println("狗吃肉"); } } /** * */ package day25; /** * @author Dk * */ public class Cat extends Animal { @Override public void eat() { System.out.println("猫吃鱼"); } } package day25; public class AnimalFactory { private AnimalFactory() {} //私有构造函数,不让其他类创建本类对象 /* //创建狗对象 public static Dog createDog() { return new Dog(); } //创建猫对象 public static Cat createCat() { return new Cat(); } */ public static Animal createAnimal(String name) { if (name.equals("dog")) { return new Dog(); }else if (name.equals("cat")) { return new Cat(); }else { return null; } } } package day25; public class Dk7Factory { //简单工厂设计模式 public static void main(String[] args) { //不用自己创建对象 /* Dog d = AnimalFactory.createDog(); //获取狗对象 Cat c = AnimalFactory.createCat(); d.eat(); c.eat(); */ Animal a1 = AnimalFactory.createAnimal("dog"); //获取狗对象 Animal a2 = AnimalFactory.createAnimal("cat"); a1.eat(); a2.eat(); Animal a3 = AnimalFactory.createAnimal("pig"); if (a3 != null) { a3.eat(); }else { System.out.println("没有这个动物"); } } } //输出 狗吃肉 猫吃鱼 没有这个动物

    Processed: 0.014, SQL: 12