设计模式之工厂方法模式笔记

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

说明

记录下学习设计模式-工厂方法模式的写法。

Factory Method(工厂方法)

意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。
结构:
设计模式之工厂方法模式笔记
其中:

  • Product定义工厂方法所创建的对象的接口。
  • ConcreteProduct实现Product接口。
  • Creator声明工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的默认实现,它返回一个默认的ConcreteProduct对象,可以调用工厂方法以创建一个Product对象。
  • ConcreteCreator重定义工厂方法以返回一个ConcreteProduct实例。

适用性:

  • 当一个类不知道它所必须创建的对象的类的时候。
  • 当一个类希望由它的子类来指定它所创建的对象的时候。
  • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

目录

设计模式之工厂方法模式笔记

UML工厂方法示例类图

设计模式之工厂方法模式笔记

以该UML类图实现工厂方法示例。

咖啡抽象类

package com.example.deesign_patterns.factory_method;

public abstract class Coffee {

    public abstract String getName();

    //加糖
    public void addSugar(){
        System.out.println("加糖");
    }

    //加奶
    public void addMilk(){
        System.out.println("加奶");
    }

}

美式咖啡类

package com.example.deesign_patterns.factory_method;

//美式咖啡类
public class AmericanCoffer extends Coffee {

    @Override
    public String getName() {
        return "美式咖啡";
    }
}

拿铁咖啡类

package com.example.deesign_patterns.factory_method;

//拿铁咖啡类
public class LatteCoffee extends Coffee {

    @Override
    public String getName() {
        return "拿铁咖啡";
    }
}

咖啡工厂接口

package com.example.deesign_patterns.factory_method;

//咖啡工厂类
public interface CoffeeFactory {

    //创建咖啡对象的方法
    Coffee createCoffee();
}

美式咖啡工厂类

package com.example.deesign_patterns.factory_method;

//美式咖啡工厂对象,专门用来生产美式咖啡
public class AmericanCofferFactory implements CoffeeFactory {

    @Override
    public Coffee createCoffee() {
        return new AmericanCoffer();
    }
}

拿铁咖啡工厂类

package com.example.deesign_patterns.factory_method;

//拿铁咖啡工厂对象,专门用来生产拿铁咖啡
public class LatteCoffeeFactory implements CoffeeFactory {

    @Override
    public Coffee createCoffee() {
        return new LatteCoffee();
    }
}

咖啡店类

package com.example.deesign_patterns.factory_method;

//咖啡店类
public class CoffeeStore {

    private CoffeeFactory factory;

    public void setFactory(CoffeeFactory factory){
        this.factory=factory;
    }

    //点咖啡功能
    public Coffee orderCoffee(){
        Coffee coffee = factory.createCoffee();
        //添加配料
        coffee.addSugar();
        coffee.addMilk();
        return coffee;
    }
}

测试类

package com.example.deesign_patterns.factory_method;

//测试类
public class Client {

    public static void main(String[] args) {
        //创建咖啡店对象
        CoffeeStore store = new CoffeeStore();
        //创建对象
        CoffeeFactory factory=new AmericanCofferFactory();
        //CoffeeFactory factory=new LatteCoffeeFactory();
        store.setFactory(factory);
        //点咖啡
        Coffee coffee=store.orderCoffee();
        System.out.println(coffee.getName());
    }
}

设计模式之工厂方法模式笔记

优点:

  • 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。
  • 在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则。

缺点
每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度。文章来源地址https://www.toymoban.com/news/detail-495832.html

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

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

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

相关文章

  • 学习笔记-设计模式-创建型模式-工厂模式

    工厂模式是一种创建者设计模式,细分之下可以分成三类 简单工厂模式 , 工厂方法模式 和 抽象工厂模式 。 简单工厂模式 最简单的工厂模式,它采用静态方法的方式来决定应该应该生产什么商品。 它的优点在于 将创建实例的工作与使用实例的工作分开,使用者不必关心类

    2024年02月10日
    浏览(26)
  • 【设计模式专题之工厂方法模式】2.积木工厂

    时间限制:1.000S  空间限制:256MB 题目描述 小明家有两个工厂,一个用于生产圆形积木,一个用于生产方形积木,请你帮他设计一个积木工厂系统,记录积木生产的信息。 输入描述 输入的第一行是一个整数 N(1 ≤ N ≤ 100),表示生产的次数。  接下来的 N 行,每行输入一

    2024年03月14日
    浏览(43)
  • 【设计模式】-工厂方法模式

    工厂方法模式(Factory Method Pattern)是一种 创建型 设计模式,它通过定义一个用于创建对象的接口,但是将 具体对象的创建 推迟到 子类 中。这样, 子类可以决定要实例化的对象类型 。工厂方法模式提供了一种方式,通过将对象的创建延迟到子类中,来解耦对象的生产和使

    2024年02月14日
    浏览(26)
  • 设计模式-工厂方法模式

         工厂方法模式(Factory Method Pattern)是一种常用的类创建型设计模式,它属于对象的创建型模式,主要用来封装对象的创建过程。在该模式中,一个抽象工厂定义了一个接口用于创建产品对象,但实际的实例化延迟到子类中进行,也就是说,具体的产品是由其对应的工厂

    2024年01月17日
    浏览(27)
  • 《设计模式的艺术》笔记 - 简单工厂模式

            定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有相同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又被称为静态工厂方法模式,属于类创建型模式         将Factory合并到父类Product中,此时

    2024年01月16日
    浏览(30)
  • 《设计模式的艺术》笔记 - 抽象工厂模式

            提供了一个创建一系列相关或相互依赖的对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。         在抽象工厂模式中,每个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品,这些产品构成了一个产品族。

    2024年01月16日
    浏览(26)
  • 重温设计模式 --- 工厂方法模式

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

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

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

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

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

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

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

    2024年02月04日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包