java设计模式-工厂方法模式

时间:2022-07-22
本文章向大家介绍java设计模式-工厂方法模式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

模式描述

工厂方法模式提供一个用于创建产品的接口,由实现类决定实现哪些产品。工厂方法模式使一个类的实例化延迟到子类,并且只适用于一个产品的等级结构。

优点

可以一定程度上解耦,消费者和产品实现类隔离开,只依赖产品接口(抽象产品),产品实现类如何改动与消费者完全无关。

例子

还是以之前简单工厂的手机为案例:

/**
 * 产品接口
 */
public interface Phone {
    public Phone getPhone();
}


package factory;

/**
 * 苹果
 */
public class AppleFactory implements Phone {

    @Override
    public Phone getPhone() {
        return new AppleFactory();
    }

    public String getName()
    {
        return "apple";
    }
}


package factory;

/**
 * vivo
 */
public class VivoFactory implements Phone {
    @Override
    public Phone getPhone() {
        return new VivoFactory();
    }
}


package factory;

/**
 * 消费者
 */
public class Coustomer {
    public static void main(String[] args) {
        Phone phone = new AppleFactory();
        System.out.println(phone.getPhone());
    }
}

和简单工厂区别

1:工厂模式方法(factory method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。

2:工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。你想要加功能,本来是要改工厂类的,而现在是修改客户端。