工厂方法模式

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("兔子爱吃隔壁草...");
    }

}

 

定义一个AnimalFactory 工厂接口 。

该工厂接口就可以看做是个约束,里面制定了一些规定。如,因为你是一个“”动物工厂接口“”,因此规定你必须拥有“创建动物”的功能。

注意事项:

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

}

 

 DogFactory 狗工厂
// 狗工厂
public class DogFactory implements AnimalFactory {

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

}

 

 RabbitFactory  兔子工厂
// 兔子工厂
public class RabbitFactory implements AnimalFactory {

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

}

 

测试类

public class Test {

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

    }

}

 

结果:

笨狗吃骨头...
兔子爱吃隔壁草...

 

posted @ 2019-11-06 20:36  小茅棚  阅读(101)  评论(0编辑  收藏  举报