设计模式(二)、工厂模式--工厂方法模式

这篇具有很好参考价值的文章主要介绍了设计模式(二)、工厂模式--工厂方法模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工厂方法模式是一种常用的创建型设计模式。它解决了简单工厂模式的问题:如违反了开闭原则,其次可以用于更复杂的结构

它的核心结构有四个角色  抽象工厂;具体工厂;抽象产品;具体产品

抽象工厂(抽象类或接口)不在负责具体的创建过程,即具体的代码实现。只制定了规范,具体的实现将由具体的工厂去实现。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。
 

工厂方法模式(Factory Method pattern)是最典型的模板方法模式的应用

代码示例如下:

定义一个抽象工厂类:

/**
 * 蛋糕工厂类
 * 定义蛋糕工厂类 该类主要是定义了createCake抽象方法,
  并且在无参构造函数中进行调用,具体的实现是在子类里进行实例化的
 */
public abstract class CakeFactory {

    abstract Cake createCake();

    public CakeFactory() {
        createCake();
    }
}

定义具体的工厂类:

/**
 * @desc: 苹果蛋糕工厂类类
 */
public class AppleCakeFactory extends CakeFactory{

    @Override
    public Cake createCake() {
        return new AppleCake();
    }
}
/**
 * @desc: 香蕉蛋糕工厂类
 */
public class BananaCakeFactory extends CakeFactory{
    @Override
    public Cake createCake() {
        return new BananaCake();
    }
}

定义抽象产品类:

/**
 * 蛋糕父类
 */
public abstract class Cake {
}

定义具体的产品类:

/**
 * 苹果蛋糕
 */
public class AppleCake extends Cake {
    public AppleCake(){
        System.out.println("创建了苹果蛋糕实例");
    }
}
/**
 * 香蕉蛋糕
 */
public class BananaCake extends Cake {
    public BananaCake(){
        System.out.println("创建了香蕉蛋糕实例");
    }
}

测试类

/**
 * 测试类
 */
public class Test {
    public static void main(String[] args) {
        AppleCakeFactory appleCakeFactory = new AppleCakeFactory();

        BananaCakeFactory bananaCakeFactory = new BananaCakeFactory();
    }
}

工厂方法经常用在以下两种情况中:

第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。java Collection中的iterator() 方法即属于这种情况。

第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,这个决策过程对生产者来说是透明的。文章来源地址https://www.toymoban.com/news/detail-562898.html

到了这里,关于设计模式(二)、工厂模式--工厂方法模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 重温设计模式 --- 工厂方法模式

    工厂方法模式 是一种创建型设计模式,它定义了一个用于创建对象的接口,但是让子类决定将哪一个类实例化。换句话说,工厂方法模式让一个类的实例化延迟到其子类。 工厂方法模式有以下几个主要角色: 抽象工厂(AbstractFactory):声明用于创建抽象产品的操作的接口。

    2024年02月13日
    浏览(49)
  • 设计模式-创建型模式-工厂方法模式

    工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorp

    2024年02月22日
    浏览(45)
  • 常用设计模式(工厂方法,抽象工厂,责任链,装饰器模式)

    有关设计模式的其他常用模式请参考 单例模式的实现 常见的设计模式(模板与方法,观察者模式,策略模式) 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类。 ——《设计模式》GoF 解决创建过程比较复杂,希望对外隐藏

    2024年01月22日
    浏览(47)
  • java设计模式-工厂方法模式

    定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程; 在系统增加新的产品时只需要添加

    2024年02月04日
    浏览(46)
  • java设计模式【工厂方法模式】

    工厂方法模式 ( FACTORY METHOD )是一种常用的类创建型设计模式,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;

    2024年02月05日
    浏览(59)
  • 设计模式之工厂方法模式笔记

    记录下学习设计模式-工厂方法模式的写法。 意图 :定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 结构 : 其中: Product定义工厂方法所创建的对象的接口。 ConcreteProduct实现Product接口。 Creator声明工厂方法,该方法返回

    2024年02月10日
    浏览(39)
  • 设计模式详解(三)——工厂方法模式

    工厂方法模式定义 工厂模式是简单工厂模式的延伸,符合开闭原则的基础上,还可以在增加新的具体产品对象时不需要对已有系统做任何修改。 工厂方法模式又称为工厂模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子

    2024年02月04日
    浏览(33)
  • 设计模式之~工厂系列(简单工厂、工厂方法、抽象工厂)

    目录 简单工厂模式 工厂方法模式 简单工厂 VS 工厂方法 抽象工厂模式: 拓展: 利用简单工厂模式优化抽象工厂   利用反射+抽象工厂   进行优化 反射+配置文件+抽象工厂进行优化 优点:简单工厂模式的最大优点在于工厂类包含了必要的逻辑判断,根据客户端的选择条件动

    2024年02月07日
    浏览(54)
  • 设计模式:简单工厂、工厂方法、抽象工厂的区别

    描述: 简单工厂模式并不是严格意义上的设计模式,而更像是一种编程习惯或者说是一种创建对象的简单方式。它使用一个工厂类来创建对象,这个工厂类包含一个方法,根据输入的参数或条件来创建相应的对象实例。 举例: 描述: 工厂方法模式是一种创建型模式,它定义

    2024年01月21日
    浏览(47)
  • 《设计模式的艺术》笔记 - 工厂方法模式

            在简单工厂模式中,当系统中需要引入新的产品时,由于静态工厂方法通过所传入的参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背开闭原则。因此,工厂方法模式应运而生。工厂方法模式是定义一个用于创建对象的接口,让子类决定将哪一个

    2024年01月23日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包