专栏首页每日分享java架构小知识java设计模式-工厂方法模式

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java设计模式-工厂模式

    简单工厂模式又称为静态工厂方法模式,为何称为静态工厂方法模式呢?是因为该模式主要由一个工厂类的静态方法来提供各种产品。

    会说话的丶猫
  • MySQL索引的原理及使用

      上篇文章中学习了MySQL库的架构以及存储引擎,了解了基本索引(普通索引,唯一索引,主键索引),着重介绍了innerDB的存储方式以及内存模型,本篇文章和大...

    会说话的丶猫
  • java设计模式-抽象工厂模式

    抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。产品有多于一个的产品族,而系统只消费其中某一族的产品。

    会说话的丶猫
  • Java中的两个关键字——super、this

    1、当子类和父类都有同名的属性时,在子类中如果要使用父类的属性 super . 属性

    用户6182664
  • 让IoC动态解析自定义配置(提供基于Unity的实现)

    在《通过自定义配置实现插件式设计》中,通过在运行时对配置的动态解析实现了真正的“插件式”设计,其本质就是让配置自行提供对配置类型实例的创建。在这篇文章中,我们将...

    蒋金楠
  • 分页辅助类

    package com.sanqing.util; /* * 分页信息辅助类 */ public class PageUtil { public stat...

    用户1220053
  • Java线程(七):Callable和Future

           接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。        Calla...

    高爽
  • Java多线程之Callable和Future

    本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。

    Java团长
  • Head First设计模式——生成器模式和责任链模式

    现又一个度假计划指定,需要指定度假每一天的活动、旅馆、用餐、门票等等事情,但是每个客人的度假计划可能不太一样。例如天数、活动类型、用餐等等。

    SpringSun
  • 异质图神经网络:模型与应用

    下面是作者0116在蚂蚁金服人工智能部的分享PPT,异质图神经网络:模型与应用,方便大家入门理解.

    Houye

扫码关注云+社区

领取腾讯云代金券