欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

我的第一篇博客,关于java简单工厂模式

程序员文章站 2022-05-19 22:06:24
...

(如有错漏之处,敬请指正)

简单工厂模式的理解

简单工厂模式就类似与现实中的工厂,能加工一类产品,例如冰淇淋工厂,传入巧克力配料,生成的就是巧克力冰淇淋,传入香草配料,生成的就是香草冰淇淋。所以在Java中,通过传入不同的参数,来获取到不同的实例就称为简单工厂模式。
我的第一篇博客,关于java简单工厂模式

首先创建一个接口

定义了动物共有的抽象信息

public interface Animal {
    void eat();
    
    void paly();

    void run();
    
}

创建具体实现类

小猫的类实现动物的接口


public class Cat implements Animal {
    private String name;

    public Cat(String name) {
        this.name = name;
    }

    @Override
    public void eat() {
        System.out.println(name+"正在吃饭");


    }

    @Override
    public void paly() {
        System.out.println(name+"正在玩耍");


    }

    @Override
    public void run() {
        System.out.println(name+"跑步");

    }
}

小狗的类实现动物的接口


public class Dog implements Animal {
    private String name;

    public Dog(String name) {
        this.name = name;
    }

    @Override
    public void eat() {
        System.out.println(name+"正在吃饭");


    }

    @Override
    public void paly() {
        System.out.println(name+"正在玩耍");


    }

    @Override
    public void run() {
        System.out.println(name+"跑步");

    }
}

使用一般方法实现

通过直接实例化调用

public class Zoo {

    public static void main(String[] args) {
        Dog dog = new Dog("小狗");
        Cat cat = new Cat("小猫");
        dog.eat();
        dog.paly();
        dog.run();
        cat.eat();
        cat.paly();
        cat.run();
    }
}

结果为

小狗正在吃饭
小狗正在玩耍
小狗跑步
小猫正在吃饭
小猫正在玩耍
小猫跑步

使用简单工厂的方式

新建一个工厂类

public class AnimalFactory {
    private Animal animal;

    public Animal createAnimal(String name) {
        switch (name) {
            case "猫":
                animal = new Cat(name);
                break;
            case "狗":
                animal = new Dog(name);
                break;
        }
        return animal;
    }
}

工厂类中包含了一个Animal的接口以及一个createAnimal的方法,当外部调用此方法给工厂传入参数时,通过switch判断自动返回传入参数对应的实例

工厂类的实现

public class Zoo {
    public static void main(String[] args) {
        AnimalFactory animalFactory=new AnimalFactory();
        Animal animal=animalFactory.createAnimal("狗");
        animal.eat();
        animal.paly();
        animal.run();
    }
}

结果为

狗正在吃饭
狗正在玩耍
狗跑步

总结

通过两种实现方式的对比可发现,第一种直接实现,客户端需要知道Dog类、Cat类。分别去实例化之后才能调用。而第二种通过简单工厂就只需要明确自己要什么实例通过工厂AnimalFactory自动装配,因此只需要知道一个AnimalFactory,通过此工厂方法createAnimal即可生成对应对应实例。