专栏首页gang_luoJava常用设计模式--三种工厂模式之工厂模式(Factory Pattern)

Java常用设计模式--三种工厂模式之工厂模式(Factory Pattern)

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

工厂方法模式角色:

  1. 抽象工厂(Abstract Factory)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
  2. 具体工厂(Concrete Factory)角色 :这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建某一种产品对象。
  3. 抽象产品(AbstractProduct)角色 :工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。
  4. 具体产品(Concrete Product)角色 :这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应

简单工厂例子中的奶茶接口以及相关奶茶实现类不变。我们只需要增加一个工厂接口以及实现这个接口的工厂类即可。

例子代码:

package com.example.factorypattern;

public interface MilkyTea {

    /**
     * 制造奶茶
     */
    void makeMilkyTea();

}
package com.example.factorypattern;

public class BoBaMilkyTeam implements MilkyTea {
    @Override
    public void makeMilkyTea() {
        System.out.println("制作波霸奶茶");
    }
}
package com.example.factorypattern;

/**
 * 红豆奶茶
 */
public class OrmosiaMilkyTea implements MilkyTea {

    @Override
    public void makeMilkyTea() {
        System.out.println("制作红豆奶茶");
    }
}
package com.example.factorypattern;

public class PearlMilkyTea implements MilkyTea {
    @Override
    public void makeMilkyTea() {
        System.out.println("制作珍珠奶茶");
    }
}
package com.example.factorypattern;

public interface Factory {

    MilkyTea makeMilkyTea();

}
package com.example.factorypattern;

public class BoBaMilkyTeamFactory implements Factory{
    @Override
    public MilkyTea makeMilkyTea() {
        return new BoBaMilkyTeam();
    }
}
package com.example.factorypattern;

public class OrmosiaMilkyTeaFactory implements Factory {
    @Override
    public MilkyTea makeMilkyTea() {
        return new OrmosiaMilkyTea();
    }
}
package com.example.factorypattern;

public class PearlMilkyTeaFactory implements Factory {
    @Override
    public MilkyTea makeMilkyTea() {
        return new PearlMilkyTea();
    }
}
package com.example.factorypattern;

import com.example.simplefactory.SimpleFactory;

public class Test {

    public static void main(String[] args) {
        Factory boBaMilkyTeamFactory = new BoBaMilkyTeamFactory();
        MilkyTea milkyTea = boBaMilkyTeamFactory.makeMilkyTea();
        milkyTea.makeMilkyTea();
    }

}

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java常用设计模式--观察者模式(Observer Pattern)

    当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。

    gang_luo
  • Java常用设计模式--三种工厂模式之抽象工厂模式(Abstract Factory Pattern)

    抽象工厂是生产创建一组相关或者相互依赖的产品对象,这些产品对象必须相互是有关系或有依赖的,而工厂方法中的工厂是生产单一产品对象的工厂。

    gang_luo
  • Docker-Compose搭建mysql、redis、zookeeper、rabbitmq、consul、elasticsearch环境

    创建并启动容器 如果文件名就叫做docker-compose.yml则可以不适用-f选项指定文件路劲,up选项启动容器,-d选项以守护模式运行

    gang_luo
  • 因果图在运维工作中的应用

    因果图在运维工作中的应用 目录 1. 什么是因果图 2. 为什么使用因果图 3. 何时使用因果图 4. 何处使用因果图 5. 谁来负责制作因果图 6. 怎样使用...

    netkiller old
  • 因果图在运维工作中的应用

    因果图在运维工作中的应用 目录 1. 什么是因果图 2. 为什么使用因果图 3. 何时使用因果图 4. 何处使用因果图 5. 谁来负责制作因果图 6. 怎样使用...

    netkiller old
  • MessagePack Java 0.6.X 可选字段

    https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

    HoneyMoose
  • Android P新增检测项 应用热修复受重大影响

    最近关于热修复崩溃在Android P 版本的内容持续增高,也许这个commit可以帮到你.

    Anymarvel
  • 浅析 Linux 初始化 init 系统

    近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经逐渐淡出历史舞台,新的 UpStart 和 systemd 各有特...

    张善友
  • 【PAT乙级】有几个PAT

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • 运用CDN技术的网站验证以及相关风险

    方法一: 描述: 使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN,多地 Ping 网站有:

    WeiyiGeek

扫码关注云+社区

领取腾讯云代金券