【设计模式活用】之工厂方法模式的几种实现方式

ST7102驱动移植与调试实战 本文详细介绍了在君正T40平台上移植和调试ST7102 LCD驱动芯片的实战经验。内容涵盖硬件接口配置、时序参数调整、寄存器初始化序列编写及常见问题解决,重点解析了ST7102单芯片集成显示与触控功能的特性,为嵌入式设备显示驱动开发提供实用指南。 阅读详情

作为一名程序猿,我们每天或多或少写不少代码,但是写出来的代码是不是扩展性良好呢?是不是便于读者阅读呢?是不是突然有一天,某位同事修改你的代码,不是背后骂你“哪个家伙写的代码!鄙视他!!!”而是惊叹曰“这是哪位施主写的代码!!咋就写的这般优美,让老衲好端品味!!!”

1.前言

菜鸟最近出去面试,发现有的面试官就问设计模式(就比如我就会经常问到,O(∩_∩)O哈哈~),菜鸟呢就听过几个常用的设计模式(什么单例啦,工厂啦)。这时,菜鸟就找到大神请教一番。

“大神,为啥现在有的面试官经常问到设计模式啊?”

“菜鸟,那可不是,设计模式在编程中也是十足重要啊!”

“为啥呢?”

“设计模式都是前辈积累的经验,对于写出扩展性的代码起到良好作用。有了设计模式,我们才能写出优雅的代码,便于后期的扩展。另外如果代码设计比较良好,对于需求的扩展性,从研发的角度来讲,你的代码扩展不会扩展影响面,有利于规避风险。”

“但是我看到大多数同事的代码,也没见到用到设计模式啊!
”
“那只能说,就像你们使用SpringMVC,虽然日常就是写各种controller,service,mapper,entity,大家只需要定义和实现。但是,大多数的人在service依然是基于函数(一堆堆方法)写出一大坨的代码,使得service臃肿,不便于后期扩展维护,阅读性也比较差”。

“那可不是,大家都是如此啊!”

“那为啥不能好好的设计一下呢,这样我们对于后面的同事去维护你的代码,就能轻松的实现需求的扩展”。

“这么说来,设计模式很重要了,那你给我讲讲工厂模式吧”。

“好,那我就把毕生所学传授给吧!!”

“太好了!!”

2.工厂方法模式

所谓正统工厂方法,也就是我们经常常用的工厂方法模式,它具有什么样特征呢?
1、产品类继承抽象类或者实现共同的接口(比如下面我们实现了Car接口)。
2、工厂类实现接口,接口方法是产品子类共同的抽象类或接口(比如我们的CarFactory,其Car就是我们产品锁共同实现的的接口)。
3、工厂类通过枚举、字符串等获得对应产品类型,以返回对应的对象实例。

/**
 * @author Seig Heil
 * @date 2019/5/30 21:30
 * @desc 车接口
 */
public interface Car {
    /**
     * 获取名称
     * @return
     */
    String getName();
}

/**
 * @author Seig Heil
 * @date 2019/5/30 21:31
 * @desc 奥迪车
 */
public class AudiCar implements Car {
    @Override
    public String getName() {
        return "我是一辆奥迪车";
    }
}

/**
 * @author Seig Heil
 * @date 2019/5/30 21:32
 * @desc 宝马车
 */
public class BwmCar implements Car {
    @Override
    public String getName() {
        return "我是一辆宝马车";
    }
}

/**
 * @author Seig Heil
 * @date 2019/5/30 21:34
 * @desc 车工厂接口
 */
public interface Factory {
    /**
     * 创建车
     * @return
     */
    Car create(Type type);

    /**
     * 车类型
     */
    enum Type{
        Audi,Bwm
    }
}

/**
 * @author Seig Heil
 * @date 2019/5/30 21:33
 * @desc 车工厂
 */
public class CarFactory implements Factory{
    @Override
    public Car create(Type type) {
        switch (type){
            case Audi:
                return new AudiCar();
            case Bwm:
                return new BwmCar();
        }
        return null;
    }
}

客户端测试类

/**
 * @author Seig Heil
 * @date 2019/5/30 21:40
 * @desc
 */
public class Client {
    public static void main(String[] args) {
        CarFactory factory = new CarFactory();
        Car audi = factory.create(Factory.Type.Audi);
        System.out.println(audi.getName());
        Car bwm = factory.create(Factory.Type.Bwm);
        System.out.println(bwm.getName());
    }
}

控制台输出

我是一辆奥迪车
我是一辆宝马车

总结,这种工厂方法模式,也是最常见的一种;但是它有个弊端,就是如果增加一种产品类,那么咱们的工厂类的方法就需要修改,这就不符“开闭原则”(对修改关闭,对扩展开放)。

3.抽象工厂模式

特征归纳:(1)、产品类独享各自的工厂类,工厂接口或抽象类;(2)、工厂接口或抽象类返回参数是产品类的基类或接口。

先定义一个车辆工厂接口,返回对象是车接口。

/**
 * @author Seig Heil
 * @date 2019/5/30 21:34
 * @desc 车工厂接口
 */
public interface CarFactory {
    /**
     * 创建车
     * @return
     */
    Car create();
}

奥迪车和宝马车各自实现各自工厂

/**
 * @description: 奥迪车工厂类
 * @Date : 2019/8/6 下午4:37
 * @Author : 石冬冬-Seig Heil
 */
public class AudiCarFactory implements CarFactory {
    @Override
    public Car create() {
        return new AudiCar();
    }
}

/**
 * @description: 宝马车工厂类
 * @Date : 2019/8/6 下午4:37
 * @Author : 石冬冬-Seig Heil
 */
public class BwmCarFactory implements CarFactory {
    @Override
    public Car create() {
        return new BwmCar();
    }
}

写个测试类

/**
 * @description: 测试类
 * @Date : 2019/8/6 下午5:06
 * @Author : 石冬冬-Seig Heil
 */
public class Client {
    public static void main(String[] args) {
        CarFactory audiCarFactory = new AudiCarFactory();
        System.out.println(audiCarFactory.create().getName());
        CarFactory bwmCarFactory = new BwmCarFactory();
        System.out.println(bwmCarFactory.create().getName());
    }
}

归纳:从上述例子我们可以看出,对于不同种类的产品有各自的工厂,同种产品可以派生子类即可;不同种类的工厂只需有最上层接口或抽象类即可,这样对于扩展一个新产品类,只需要增加一个工厂,以及对应工厂产品类即可。这就符合“开闭原则“,但是呢会产生更多的类,但是往往我们实际场景中很少有这种需求。

4.静态工厂模式

对于工厂方法模式,我们可以对工厂类进行简化,就是省略工厂接口。

/**
 * @author Seig Heil
 * @date 2019/5/30 21:46
 * @desc 静态工厂实现
 * 区别:
 * (1)、工厂类无需实现接口
 * (2)、提供静态方法调用
 */
public final class SimpleCarFactory {
    /**
     * 创建产品
     * @param type
     * @return
     */
    public final static Car create(Type type){
        switch (type){
            case Audi:
                return new AudiCar();
            case Bwm:
                return new BwmCar();
        }
        return null;
    }
    public static enum Type{
        Audi,Bwm
    }
    private SimpleCarFactory(){}
}

我们对比工厂方法模式,其实发现,就是不再实现工厂接口,而是提供一个静态方法,似乎清爽了许多。

客户端测试类

/**
 * @author Seig Heil
 * @date 2019/5/30 21:40
 * @desc
 */
public class Client {
    public static void main(String[] args) {
        Car audi = SimpleCarFactory.create(SimpleCarFactory.Type.Audi);
        System.out.println(audi.getName());
        Car bwm = SimpleCarFactory.create(SimpleCarFactory.Type.Bwm);
        System.out.println(bwm.getName());
    }
}

5.静态工厂+反射实现

综合上述两种实现方式,无论工厂方法模式还是静态工厂模式,我们对于增加产品,对应的生产产品的方法都需要修改(比如哪两种,就需要新增枚举);这时,我们可以采用放射方式。

/**
 * @author Seig Heil
 * @date 2019/5/30 21:46
 * @desc 静态工厂实现
 * 区别:
 * (1)、工厂类无需实现接口
 * (2)、提供静态方法调用
 * (3)、通过反射实现,用户端只需要提供子类.class即可。
 */
public final class SimpleCarFactory {
    /**
     * 创建产品
     * @param clazz
     * @return
     */
    public final static Car create(Class<? extends Car> clazz){
        try {
            return (Car)Class.forName(clazz.getName()).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    private SimpleCarFactory(){}
}

我们可以看到方法参数采用界定 Class<? extend Car>,这意味着传入的参数一定是实现Car接口,所以不会让客户端调用随便传入。

比如如下一个类HondaCar。

/**
 * @author Seig Heil
 * @date 2019/5/30 21:56
 * @desc 这辆车没有实现 Car接口
 */
public class HondaCar {
    public String getName(){
        return "我是一辆丰田车";
    }
}

客户端测试类

/**
 * @author Seig Heil
 * @date 2019/5/30 21:40
 * @desc
 */
public class Client {
    public static void main(String[] args) {
        Car audi = SimpleCarFactory.create(AudiCar.class);
        System.out.println(audi.getName());
        Car bwm = SimpleCarFactory.create(BwmCar.class);
        System.out.println(bwm.getName());
        Car honda = SimpleCarFactory.create(HondaCar.class);//这里一行代码其实是无法编译通过的
        System.out.println(honda.getName());
    }
}

根据如上,我们可以看到简单工厂+反射方式,从扩展性来讲,只要产品类实现Car接口即可。从调用方来讲,静态方法规约界定了一定要实现Car接口的子类,从而严格控制参数。

6.枚举方式

我们除了上述三种,还有一种,那就是枚举。
特征归纳:
1、枚举定义一个抽象方法,方法返回类型是子类共同要实现的Car接口。
2、枚举成员要实现抽象方法,并返回对象实例。
3、从扩展性来讲,新增子类,只需要新增成员,并实现抽象方法即可。
4、遵循“迪米特原则”,对于客户端调用利于读懂。

/**
 * @author Seig Heil
 * @date 2019/5/30 22:05
 * @desc 枚举方式实现
 * (1)、定义一个抽象方法
 * (2)、成员实现该抽象方法
 * 从扩展性来讲:
 * 1、增加一个产品类,需要增加一个枚举成员,相对静态工厂+反射方式,需要增加代码。
 */
public enum CarFactoryEnum {
    Audi{
        @Override
        Car create() {
            return new AudiCar();
        }
    },
    Bwm{
        @Override
        Car create() {
            return new BwmCar();
        }
    };

    abstract Car create();
}

客户端测试类


/**
 * @author Seig Heil
 * @date 2019/5/30 21:40
 * @desc
 */
public class Client {
    public static void main(String[] args) {
        Car audi = CarFactoryEnum.Audi.create();
        System.out.println(audi.getName());
        Car bwm = CarFactoryEnum.Bwm.create();
        System.out.println(bwm.getName());
    }
}

7.总结

我们回顾上述四种实现方法,大家记住了哪种呢?如果还没有印象,那就自己手敲一下代码。作为一名程序员,只有代码敲的多,我们才能加深自己的理解。就像蒸馒头一样,光看人家做的不错,自己跃跃欲试。那就动手来一把吧!
工厂模式也是最常见的一种,不过我们使用Spring框架,就可以把Bean对象交由Bean容器管理。
尽管如此,如果我们掌握上述几种模式,是不是可以在同事间吹个niubility吧。坦白来讲,掌握了,你就可以运用到项目实践之中,这样的代码就上升一个层次,不再是普通大众,当你不断提高了,日积月累,你也会成为大神。
就像,孔乙己说“我会‘回’字的几种写法,你们晓得吗?”

下面的是我的公众号二维码图片,欢迎关注,或公众号搜索【秋夜无霜】。
秋夜无霜

YOLO26训练教程,训练自己的数据集教学,从源码下载,配置虚拟环境,准备数据集、训练、验证、推理测试 。实现0到1的完整教学过程。快速入门必看 本文详细介绍了YOLO26目标检测模型的配置与使用流程:1)下载YOLOv11源码并创建Python3.10虚拟环境;2)安装PyTorch2.5.1及相关依赖库;3)准备数据集并修改配置文件;4)编写训练脚本设置参数(640x640分辨率、500轮次);5)验证模型效果;6)使用训练好的模型进行推理测试;7)生成可视化热力图。整个过程涵盖了从环境搭建到模型应用的全流程,并提供了清华镜像源加速下载。 阅读详情

相关推荐

编译opencv4.2时出现undefined reference to `jpeg_default_qtables‘错误的解决方案

操作系统:kylinV10 opencv版本:4.2.0 在编译opencv4.2.0的版本时,出现undefined reference to `jpeg_default_qtables’的错误提示,导致openc编译中断,不能继续编译,所以这个错误必须解决。 解决方案 查看错误的名字,根据名字分析,很有可能是当前系统中没有安装jpeg第三方库,到 http://www.ijg.org/上下载最新的源码包 jpegsrc.v9e.tar.gz,按如下顺序开始编译安装: tar -xzvf jpegsr.

jndingxin的专栏 5106

Java 设计模式——工厂方法模式

本文介绍了工厂方法模式的相关知识。

代码星辰的博客 2879

[附源码]计算机毕业设计JAVA网上花店系统

附源码]计算机毕业设计JAVA网上花店系统项目运行环境配置:(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat。

ssm毕设程序设计 2445

工厂模式之3种实现方式

目录(一) 工厂模式概述(二) 简单工厂模式(三) 工厂方法模式(四) 抽象工厂模式(五) 总结 (一) 工厂模式概述 工厂模式: 是Java中最常用的设计模式之一, 它提供了一种创建对象的最佳方式. 在工厂模式中, 我们在使用工厂类创建对象时 不会对客户端暴露 创建逻辑, 并且是通过使用一个共同的接口来指向新创建的对象 (二) 简单工厂模式 简单工厂模式: 定义一个创建对象的工厂类, 由工厂类决定创建出哪一种对象的实例, 工厂类内部已封装创建出哪一种对象的实例的逻辑代码 Phone 手机接口 inter

Admin_Lian的博客 1334

关于使用vcpkg下载osgearth遇到的问题

注意--x-manifest-root=后面跟着的E:\gitproject\osgearth-osgearth-3.5\vcpkg是你下载的源码解压缩后vcpkg.json的文件地址,然后等待编译完成。安装vcpkg后使用vcpkg install osgearth:x64-windows安装好osgearth并且导入项目使用时,发现无法运行官方文档中示例的main.cpp。这里写一种自己用过的使用vcpkg安装osgearth3.5的方法,源码,打开vcpkg所在的命令行,执行。示例main.cpp。

m0_61776040的博客 1526

YOLO11改进 - 卷积Conv | DEGConv(方向引导边缘门控卷积) : 空间分块、方向先验、轻量边缘增强

本文介绍了方向引导边缘门控卷积(DEGConv),一种专为增强边缘敏感度与方向感知能力设计的轻量级模块。该方法通过 Sobel 算子生成方向嵌入,结合条纹卷积提取水平与垂直边缘特征,并利用门控机制动态抑制背景噪声,从而精准捕捉细粒度结构。我们将 DEGConv 成功集成进 YOLO11,在 Backbone 的 SPPF 后及 Neck 的 P3、P4 分支中引入该模块以优化特征提取。实验证明,集成 DEGConv 的 YOLO11 在检测任务中表现优异,有效提升了模型对复杂边缘与方向特征的建模能力。

魔改工程师的博客 677

设计模式介绍和实现:工厂方法模式(Factory Method Pattern)

工厂方法模式将客户端与具体产品的实现分离,客户端只需知道产品的抽象类型,无需关心具体的实现细节,从而降低了客户端和具体产品之间的耦合性。增加了系统的抽象性和理解难度:工厂方法模式引入了更多的抽象层次,使得系统更加灵活,但也增加了理解和学习的难度。增加新的产品类时,无需修改已有代码,只需添加新的具体产品类和具体工厂类即可。类的个数增加:引入了多个工厂类和产品类,使得系统中的类的数量增加,增加了代码的复杂度和维护成本。:通过添加新的具体工厂和具体产品类,可以很方便地扩展系统的功能,而无需修改现有的代码。

AmosLLc的博客 686

道路场景分割:车道线、可行驶区域与路沿检测

道路场景分割:车道线、可行驶区域与路沿检测​ ,人工智能,计算机视觉,大模型,AI,文章围绕道路场景分割展开,涵盖车道线、可行驶区域与路沿检测。介绍了基本概念、重要性,各部分检测的类型、方法、难点及解决思路,还涉及技术融合、数据集、评价指标、发展趋势、应用案例、代码示例、不同天气处理、实际问题与方案、实现流程、相关技术工具、教育研究应用、产业前景、伦理安全问题及学习资源等,全面阐述了道路场景分割的多方面内容,为相关学习和研究提供了丰富信息。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 22万+

工厂模式的三种实现方式

import com/*** Description: 简单工厂模式System . out . println("使用简单工厂模式");// 根据用户输入的类型来获取Pizza对象 if(orderType . equals("greek")) {} }/*** Description: 简单工厂模式System . out . println("使用简单工厂模式");

Sun的个人博客 831

SAP UI5 本地开发工具 fiori-tools-proxy 中间件详解及使用场景

该中间件基于 http-proxy-middleware 库实现,分为 ui5 资源代理和 backend 代理两大模式,并可与 fiori run 或 ui5 serve 命令无缝集成,通过配置 ui5.path、ui5.url 以及 backend.path、backend.url 等参数,实现与目标系统的灵活对接和安全配置 (就后端系统代理而言,fiori-tools-proxy 内置 @sap-ux/backend-proxy-middleware,可将以指定前缀(如。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 519

redhawk如何看高toggle rate instance

1.图形界面View-Power Map - Toggle Map of Instances。redhawk通过报告和图形界面两种方式查看高toggle rate的instance。2.看warning log,在adsRpt/Warn里,搜toggle rate。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 619

设计模式之工厂方法模式(Java实现)

文章目录前言一、认识工厂模式二、引出工厂模式三、工厂模式实现3.1、简单工厂模式3.2、工厂方法模式总结参考资料 前言 本篇博客是关于工厂方法模式的实现,若文章中出现相关问题,请指出! 对应代码地址:Gitee(demo-exer/ java-Lear23designpatterns)、Github(java-demo/ java-Lear23designpatterns) 所有博客文件目录索引:博客目录索引(持续更新) 一、认识工厂模式 工厂模式定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 1787

Ubuntu22.04如何安装cuDNN8.9.7

本文详细介绍了在Ubuntu 22.04系统上为CUDA 12.2安装适配cuDNN 8.9.7的完整流程,特别针对RTX A6000显卡。主要内容包括:1)选择与CUDA 12.2兼容的cuDNN版本;2)使用deb包方式的安装步骤(添加仓库、导入密钥、安装组件);3)通过MNIST示例验证安装;4)版本锁定、卸载旧版等补充说明;5)性能测试方法。文中强调了版本匹配的重要性,并提供了多卡配置建议,为搭建深度学习开发环境提供完整指导。

2501_93651177的博客 1845

Java 设计模式-工厂方法模式

工厂方法模式去掉了简单工厂模式中工厂方法的静态属性使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担。工厂方法模式使用继承自抽象工厂角色的多个子类来代替简单工厂模式中的“顶级类”。这样便分担了对象创建的压力;避免工厂类中用逻辑判断来决定创建对象,而且这样使得结构变得相当灵活当有新的产品产生时,只要按照抽象产品角色、抽象工厂角色提供的规则来生成,那么就可以被客户使用,而不必去修改任何已有的代码,可以看出工厂方法模式符合开闭原则。

精神小牛马 1251

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【设计模式】 工厂方法模式

设计模式 -- 工厂方法模式

2403_87459748的博客 1451

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

设计模式——工厂方法模式详解

0.前言实际上工厂模式分为三种,第一种是简单工厂模式,第二种是工厂方法模式,第三种是抽象工厂模式。此篇为工厂方法模式的详解,那为什么跳过了简单工厂模式呢,是因为这两种模式差别不大,差异之处会在本文中指出,懂了工厂方法模式,稍微解释就懂了简单工厂模式。所以仔细看哦~还有就是抽象工厂模式,这个模式以后会另外写文章介绍。1.工厂方法模式模式介绍工厂方法模式定义……...

关于Android开发的一些技术点总结 ╮( ̄▽ ̄”)╭ 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【设计模式】工厂方法模式

这就是工厂方法模式呀!

就很有趣的博客 1536

【设计模式】工厂方法模式 在java中的应用

【设计模式】工厂方法模式 在java中的应用

qq_42320804的博客 1396

设计模式——工厂方法模式

工厂方法模式是一种创建型设计模式,通过定义创建对象的接口,让子类决定实例化哪个类。它解决了传统new创建方式导致的耦合问题,使对象创建逻辑集中管理,易于扩展。模式包含抽象产品、具体产品、抽象工厂和具体工厂四个角色。示例展示了日志记录器的实现:定义Logger接口和多种具体记录器(Console/File/Database),通过对应的工厂类创建实例。客户端只需与抽象工厂交互,无需关心具体实现类,实现了解耦和灵活扩展。

蔡定努 1520

设计模式实践教程 - 基于 micooz/DesignPattern 开源项目

设计模式实践教程 - 基于 micooz/DesignPattern 开源项目 项目介绍 该项目由 Github 用户 micooz 维护,是针对软件开发中常见设计模式的实现集合。它旨在提供一个学习和理解各种设计模式的实战平台,涵盖了从单例模式到观察者模式等二十多种经典设计模式。通过此仓库,开发者可以深入学习每种模式的概念、应用场景及其实现细节,助力提升代码质量和可维护性。 项目快速启动 环境要求...

gitblog_00751的博客 819

深入浅出设计模式【二、工厂方法模式】

工厂方法模式是一种创建型设计模式,它将对象实例化延迟到子类,通过定义创建对象的接口让子类决定具体实例化的类。该模式包含产品、具体产品、创建者和具体创建者四个核心角色,适用于需要解耦、扩展或集中管理对象创建的场景。实现方式包括经典继承、参数化工厂和反射/Lambda表达式等,各有利弊。最佳实践强调依赖抽象、遵循开闭原则和避免过度设计。该模式思想已演变为现代开发中的IoC容器、静态工厂方法等广泛应用,如Spring框架的核心机制。

NeoLshu的博客 1102

每天一个设计模式 —— 工厂方法模式

工厂方法模式是一种创建型设计模式,通过将对象实例化推迟到子类来实现扩展性。该模式包含4个核心角色:抽象产品定义接口,具体产品实现不同变体,抽象工厂声明创建方法,具体工厂实现特定产品的创建。以披萨店为例,父类PizzaStore定义订单流程,子类NYPizzaStore和ChicagoPizzaStore各自实现createPizza()方法创建对应风味的披萨。相比简单工厂模式,工厂方法的优势在于新增产品时只需扩展新类而无需修改现有代码,完美遵循开闭原则。这种"父类定规则,子类做实现"的方

sengminPark的博客 1250

设计模式之工厂方法模式

如有不足,欢迎指出,期待和大家共同进步---------------------------------------------------------------------------------------------------1、工厂方法模式是一种创建型设计模式,它提供了一种将对象的创建委托给子类的方式,工厂方法模式定义了一个用于创建对象的接口,让子类决定实例化哪个类。2、工厂方法模式的核心思想是将对象的创建和使用解耦,通过将对象的创建交给子类来实现,子类可以根据需要自行选择实例化哪个类。

针线犹存未忍开 1046

[C++实现 设计模式(2)] : 工厂方法模式

文章目录工厂方法模式的定义场景说明工厂方法模式的应用工厂方法模式的使用场景工厂方法模式的扩展简单工厂模式 工厂方法模式的定义        首先需要说一下工厂模式 , 工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式)、工厂方法模式、以及抽象工厂模式 . 定义 : 定义一个用于创建对象的接口,让子类决定实例化...

Nonpc的博客 2057

工厂设计模式-三种实现方式

工厂设计模式-三种实现方式工厂设计模式说明一、简单工厂模式 Simple Factory1.1案例代码二、工厂方法模式 Factory Method2.1案例代码三、抽象工厂模式 Abstract Factory3.1案例代码 工厂设计模式说明 一、简单工厂模式 Simple Factory 简单工厂模式没有被归类到常见23种设计模式中,此处主要是和工厂方法、抽象工厂对比,方便理解 1.1案例代码...

cs4380的博客 707
上一篇: 如何甄别一份好简历及面试秘诀
下一篇: 【设计模式活用】之接口改造案例的设计思路(代理、适配器、工厂、模板方法)
秋夜无霜
博客等级 码龄16年 137粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值