对Factory,strategy,template模式的总结

火星遥感数据的获取与处理工具安装详解 有关火星遥感影像数据的那些事... 阅读详情

一)Factory工厂模式:

1)简单工厂模式

相当于new一个实例。而作为工厂,当然new的不只是一个实例,而是多个实例。

我们可以通过switch或者if来控制生成你所需要的实例。

2)抽象工厂模式

抽象工厂的作用是来new一组实例对象,通过extends一个抽象类,重写多个抽象方法,

每个抽象方法new一个实例对象。这样,就可以一个实现可以同时实例化一组对象。


二)strategy策略模式:对同一问题的不同解决方法。我们可以通过此模式来解决。例如:对java的

加密与解密的不同算法就是通过此模式来实现的。

//先定义抽象类

public abstract class LifeCycle{

       /*

       *下面操作是我们希望在子类中完成
   * liftCycle();
   */

       private DateHelper datehelper;

 

       public void setDateHelper(DateHelper datehelper){

             this.datehelper = datehelper;

      }

 

      //执行的逻辑步骤

      public final void runLogal(){

              ......

              datehelper.liftCycle();

              ......

      }

}

 

//将希望在子类中完成的方法集合到一个接口中

public interface DateHelper{

      void liftCycle();

}

 

//通过实现以上接口,然后注入到LifeCycle类中

 

三)template模板模式:定义操作的流程,将一些步骤的执行延迟到其子类中

优点:扩展性强

概述:可以用来划分模块,将相同的部分在抽象类中实现,然后将变化的部分

提取方法作为抽象类的抽象方法,延迟到子类中实现。

//先定义抽象类

public abstract class LifeCycle{

       /**
   * 下面操作是我们希望在子类中完成
   */
      public abstract void liftCycle();

 

      //执行的逻辑步骤

      public final void runLogal(){

              ......

              liftCycle();

              ......

      }

}

 

//抽象类的任意一个子类

pubilc class Life1 extends LifeCycle{

 

    public void liftCycle(){

          ......

    }

}

 

//实现类

public class TemplateMain{

 

    public static void main(String[] args) {
         LifeCycle operation = new Life1();
         operation.runLogal();
   }

}

Hierarchical-Localization 环境配置与依赖管理全攻略 本文提供了Hierarchical-Localization(hloc)视觉定位工具箱从零开始的环境配置与依赖管理全攻略。针对Windows、Ubuntu和macOS三大操作系统,详细解析了Python版本选择、PyTorch与CUDA版本匹配、pycolmap版本锁定等核心依赖的安装步骤,并汇总了权重文件格式、NumPy版本、路径配置等常见问题的排查与解决方案,旨在帮助用户高效搭建稳定的hloc开发环境。 阅读详情

相关推荐

饥荒联机版Mod开发——modmain环境与API深度解析

本文深入解析饥荒联机版Mod开发中的modmain.lua环境与核心API,详细讲解环境表构建原理、API注册与调用时机,并提供高级开发技巧与最佳实践。通过源码分析和实际案例,帮助开发者掌握Mod开发核心技术,解决常见问题,提升开发效率与代码质量。

weixin_30312563的博客 432

介绍一下什么是策略工厂

通过告诉工厂需要哪种策略,工厂会负责创建相应的策略实例,而客户端则可以通过统一的接口来调用这些策略的方法,而无需关心具体实现的细节。我来解释一下,就是我可以找这个工厂告诉他我需要什么策略,他就可以把这个策略(接口的实现类)给我,然后我调用方法就可以了,因为他们都是相同的父类,所以我不用关心这些策略的实现类是什么,只需要知道他们的名字就行了。同时,通过使用相同的接口,客户端可以统一对待不同的策略,降低了代码的耦合度,提高了代码的可维护性和可扩展性。包含了用于选择和创建策略的方法。策略工厂相对于简单工厂。

qq_44145781的博客 654

Clion+platformIO开发ESP32时找不到lib文件中引入第三方库的头文件(头文件下有波浪线),实际编译是成功的解决方法

Clion+platformIO开发ESP引入第三方库文件编译器无法找到.h文件但编译成功

zs5218的博客 1852

详解Singleton、Factory、Strategy在项目中的应用

一、前言 前几天阅读一框架文档,里面有一段这样的描述 “从对象工厂中………” ,促使写下本文。尽管一些模式简单和简单,但是常用、有用。 结合最近一个项目场景回顾一下里面应用到的一些模式 Singleton、Factory、Strategy。 Singleton:创建型模式,负责创建维护一个全局唯一实例 Factory:创建型模式,对象工厂负责根据标识创建或获取具体的实例对象 Strategy:行...

qianlia的博客 936

股票分时数据获取-东方财富

获取下股票分时数据,分时均价下线,分时成交额等,用于量化t0交易条件还是很不错了的。

meiaoxue1234的博客 1万+

爬取国家统计局最近10年年度数据

一、编码流程 1.目标网址:https://data.stats.gov.cn/easyquery.htm?cn=C01 2.编码思路: (1) 解析左侧指标树,实现4级标签定位 (难点:层层嵌套,下一级指标的xpath路径以上一级指标为基础;不是所有二级指标都含有三和四级指标,需要进行判断) (2) 使用selenium webdriver 点选指标,加载出右侧表格数据 (难点:当指标无法在全局页面显示时,需向下拖动滚动条) (3) 解析右侧数据,实现数据存储 3.使用模块: (1) selenium:解

weixin_39645690的博客 4557

golang 策略模式与策略工厂模式

什么是策略模式 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。 什么是策略工厂模式 在一个使用策略模式的系统中,当存在的策略很多时,客户端管理所有策略算法将变得很复杂,如果在环境类中使用策略工厂模式来管理这些策略类将大大减少客户端的工作复杂度 代码 在下面的代码中,分别用策略模式和策略工厂模式实

m0_37681974的博客 1187

手把手教你学PCIE(10.5)--PCIE故障排除方法的分步排查法介绍

通过以上分步排查法,你可以系统地诊断和解决 PCIe 设备的故障。每个步骤都有助于逐步缩小问题范围,最终找到并解决问题。

MHD0815的博客 1872

设计模式二 策略模式(Strategy Method)

“组件协作”模式 现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,下实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式. 典型模式 Template Method Strategy Observer/Event 动机(Motivation) 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担. 如何在运行是根据需要透明地更改对象的算.

Edidaughter的博客 589

Python之abbrobotegm包语法、参数和实际应用案例

`abbrobotegm` 是用于控制 ABB 机器人的 Python 接口包,主要通过 EGM(Externally Guided Motion,外部引导运动)协议与 ABB 机器人控制器进行通信,实现对机器人的实时位置控制、状态监控和运动引导等功能。该包适用于需要将 ABB 机器人与外部系统(如视觉系统、传感器等)集成的场景。

王国平的博客 1254

YOLO11改进-注意力-引入级联组注意力机制(Cascaded Group Attention, CGA)

输入特征拆分:输入特征进入 CGA 模块后,被均匀拆分为个部分,每个部分作为一个注意力头的输入,这样每个头关注输入特征的不同部分,实现特征的并行处理,同时为提高注意力多样性奠定基础。注意力头计算单元:每个注意力头包含三个线性投影层、、用于将输入特征映射到不同子空间,以及计算自注意力的单元。在计算过程中,通过注意力头之间的级联操作,前一个头的输出会累加到下一个头的输入上,实现特征的逐步细化。

qq_64693987的博客 2489

spdlog库学习(四):logger

上一篇学习了spdlog库的默认日志输出流程。默认的日志输出使用的logger并无特殊,只是其sink使用了。给出的示例中还给出了另外的用法。包括:手动创建控制台日志、文件日志包括很多种:基本文件日志、循环文件日志、每日日志文件。接下来主要学习这几种日志。示例中其他列出的功能会在后续的文章中学习。手动创建控制台日志的方法如下: 该方法一个模板,定义在,接口定义如下: 实现在 这里这个是什么用法暂时不知道。但我们知道Factory默认类型是,从名字知道是同步工厂。通过该工厂创建的logger都是即时输出的。其

weixin_43233774的博客 5683

Opencascade 保存点云为 .stp 和 .step 格式

总结一下,OpenCascade提供了强大的功能和工具,使我们能够方便地将点云数据保存为 .stp 和 .step 格式。通过使用类似于上述示例代码的方法,你可以使用OpenCascade库将点云数据保存为.STP和.STEP格式。总结一下,使用OpenCascade库,你可以方便地将点云数据保存为.STP和.STEP格式。通过使用类似于上述示例代码的方法,你可以将点云数据转换为OpenCascade的几何模型,并将其保存为所需的文件格式。请注意,上述代码仅涵盖了将点云数据保存为.STP格式的基本步骤。

CwzCode的博客 1157

图解设计模式【1】

简要介绍23种设计模式,作为《图解设计模式》的笔记。

一般路过底层打工人的博客 1443

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

区分那些相似的设计模式

原文地址:http://blog.csdn.net/ariesjzj/article/details/11555595 GoF在《Design Patterns: Elements of Reusable Object-Oriented Software》中总结了23种经典的设计模式,成为了该领域的经典。尽管除此之外后来又有人提出了很多其它设计模式,但因为较为零散且有些只针对特定语言,这里暂不...

weixin_34113237的博客 178

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

相似的设计模式

原文地址:http://blog.csdn.net/ariesjzj/article/details/11555595 GoF在《Design Patterns: Elements of Reusable Object-Oriented Software》中总结了23种经典的设计模式,成为了该领域的经典。尽管除此之外后来又有人提出了很多其它设计模式,但因为较为零散且有些只针对特定语言,这里暂不涉...

吾道不孤也 262

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

那些相似的设计模式的区别

GoF在《Design Patterns: Elements of Reusable Object-Oriented Software》中总结了23种经典的设计模式,成为了该领域的经典。尽管除此之外后来又有人提出了很多其它设计模式,但因为较为零散且有些只针对特定语言,这里暂不涉及。首先,《Design Patterns: Elements of Reusable Object-Oriented S...

TanJianCheng 762

设计模式一句话解释

学习编程,设计模式不可不知(当然是主要的几个模式)。但是实际中我们都或多或少的用到了其中的某些模式,经验总是这样的麻!下面我就我个人理解的四个比较重要的模式用一句话进行解释。毕竟设计模式这个话题太重,一般没有时间也没有很好的精力来通读。在这里希望给大家一个更清晰的认识!1. Factory模式具体有三类模式,可以这样理解:,Factory是将创建进行封装的模式 ,具体有三类:Sim

PMP-DoNET 889

模式比较

模式比较: 1. Decorator、 Adapter、FacadeDecorator:不改变接口,但加入责任(将一个对象包装起来,以增加新的行为和责任)。 Adapter:将一个接口转成另一个接口(将一个对象包装起来,以改变其接口)。 Facade:简化接口,将客户从组件的子系统中解偶出来。2. Template Method、Strategy、Factory Method:

持续改进 750

【精华】设计模式重点知识及实践

【精华】设计模式重点知识及实践

weixin_43824425的博客 424

设计模式

C++后端面试知识概述设计模式解决复杂性面向对象设计原则(8个)重构关键技法模式分类(从目的角度)模式分类(从范围角度)模式分类(从封装变化角度)1. Template Method(模板方法模式)动机定义结构要点总结例子不使用模式使用模板方法模式2. Strategy(策略模式)动机定义结构要点总结例子不使用模式使用策略模式3. Observer(观察者模式)动机定义结构要点总结例子不使用模式使用观察者模式4. Decorator(装饰模式)5. 桥模式6. Factory Method(工厂方法模式)动

wuerfang的博客 966

学习笔记(十一)——设计模式

这次理论内容较多,大家有什么不明白的可以自己查阅。 与开始学习Android代码不同,我自己认为设计模式已经是学习Android(包括其他的设计语言一样)的一种升华,它更多的不是强调代码的含义及使用,而是更多强调设计程序的框架,是从更高的眼光来看整个设计过程。 Android是以Java为基础进行开发的,Java是一种面向对象的设计语言,通过学习,我发现它最大优势不是通过封装继承多态实现更方便的

BistuSim的博客 609

常见的设计模式

Proxy 代理模式 Factory 工厂模式 Singleton 单例模式 Delegate 委派模式 Strategy 策略模式 Prototype 模型模式 Template 模板模式 总共有23种设计模式 ,这23种设计模式是建立在六大设计原则...

yinni11的博客 184

spring--spring必不可少的三个模式:factory模式(包括简单工厂和抽象工厂), strategy模式,template method模式

============================== 工厂: https://blog.csdn.net/zxt0601/article/details/52798423 一般用简单工厂+抽象工厂 1:工厂生成产品方法是static: 1-1简单(静态)工厂: 1-2简单(反射)工厂:方法中里用反射生成产品 1-3多方法工厂:生成产品的方法不一样 2:普通工厂:抽象工厂层+具...

weixin_42950690的博客 937

Spring入门者的一些学习方法及意见

一、首先Java的基础、面向对象的基础和设计模式的基础知识是必不可少的。  关于设计模式我觉得不用学太多,但以下三个模式是学习Spring必不可少的:factory模式(包括简单工厂和抽象工厂), Strategy模式,Template method模式。如果不掌握这些你就根本没法领悟Spring的精髓,只能依样画葫芦地照搬,这是很可怕的事。  我这里强烈建议的书可能让人有点意外,那就是Exper

zaowei21的专栏 1196
下一篇: 对Factory,strategy,template模式的总结
佳茗
博客等级 码龄15年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值