工厂方法模式

1、 概述
工厂方法模式中  抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现

2、 优缺点

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

      如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,

     不影响已有的代码,后期维护容易,增强了系统的扩展性

缺点
需要额外的编写代码,增加了工作量


代码:

Animal 动物抽象类

// 动物抽象类
public abstract class Animal {

    public abstract void eat();    // 吃 的 功能
}

Dog 类

// 狗类 
public class Dog extends Animal {

    @Override
    public void eat() {
        System.out.println("笨狗吃骨头...");

    }

}

Rabbit 类

// 兔类
public class Rabbit extends Animal {

    @Override
    public void eat() {
        System.out.println("兔子爱吃隔壁草...");
    }

}

Factory 工厂接口 (造动物) 

// 工厂接口
public interface Factory {
    
    public Animal createAnimal();   // 创造动物的功能
    

}
 DogFactory 狗工厂
// 狗工厂
public class DogFactory implements Factory {

    @Override
    public Animal createAnimal() {
        
        return new Dog();
    }

}
 RabbitFactory  兔子工厂
// 兔子工厂
public class RabbitFactory implements Factory {

    @Override
    public Animal createAnimal() {
        return new Rabbit();
    }

}

测试类

public class Test {

    public static void main(String[] args) {
        
        // 需求: 买狗
        Factory f = new DogFactory();
        Animal a = f.createAnimal();
        a.eat();
        
        // 需求:买兔子
        f = new RabbitFactory();
        a = f.createAnimal();
        a.eat();

    }

}

结果:

笨狗吃骨头...
兔子爱吃隔壁草...
原文地址:https://www.cnblogs.com/penguin1024/p/11808471.html