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

2020-08-06 14:35:29 浏览数 (1)

模式描述

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

优点

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

例子

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

代码语言:javascript复制
/**
 * 产品接口
 */
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:工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。你想要加功能,本来是要改工厂类的,而现在是修改客户端。

0 人点赞