首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java常用设计模式--三种工厂模式之工厂模式(Factory Pattern)

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

作者头像
gang_luo
发布2020-08-13 11:37:24
4740
发布2020-08-13 11:37:24
举报
文章被收录于专栏:gang_luogang_luo

工厂模式(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();
    }

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工厂方法模式角色:
  • 例子代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档