创建型模式的设计模式笔记

【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案 方案适用场景推荐指数每个tool_use必须生成对应tool_result最基础的原则,所有Harness都必须遵守⭐⭐⭐⭐⭐裁剪历史时成对处理实现了上下文裁剪/压缩逻辑的Harness⭐⭐⭐⭐⭐并行工具调用结果数量校验支持多工具并行调用的场景⭐⭐⭐⭐使用官方SDK高层封装不需要特别定制消息组装逻辑⭐⭐⭐⭐请求前主动校验中间件追求生产级健壮性,提前拦截问题⭐⭐⭐⭐⭐这类报错,本质上是。 阅读详情

此笔记是在软件秘笈-设计模式那点事上做的笔记

一.工厂方法模式

1.开-闭 原则

指一个软件实体应对扩展开开放,对修改关闭。在设计一个软件模块的时候应该使这个模块可以在不被修改的前提下被扩展

优势:

(1)通过已有系统扩展自身的行为,从而满足新的软件需求,具有一定的适应性和灵活性

(2)原有的软件系统逻辑不被修改,保证了原系统和新系统的稳定性

2.依赖倒置原则

不要让高层组件依赖低层组件,更不能依赖具体实现类,都要依赖于抽象。针对于接口编程,而不是针对于实现编程。降低了客户程序与实现细节的耦合度。

3.在工厂方法模式中,存在几个角色

(1)抽象工厂

(2)抽象产品

(3)具体工厂

(4)具体产品

抽象工厂生产抽象产品,具体工厂(实现抽象工厂)生产具体产品(继承或实现抽象产品)。抽象对具体

4.jdk中的工厂方法模式

java.util.List java.util.LinkerList java.util.ArrayList

ArrayList实现了List中的iterator()方法

List<String> a=new ArrayList<>();

5.使用场合

(1)当子类型可能会很多,需要不断添加

(2)当一个系统尚在框架设计阶段,还不知道具体实例化哪些类

(3)系统设计之初不需要具体对象的概念

二.抽象工厂模式

使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可。例:肯德基点餐

1.抽象

类似于工厂方法模式的开闭和依赖倒置,使用抽象

设计原则

2.多用对象组合,少用集成

就是让对象作为类的成员变量,通过构造函数或者set方法给类对象的实例变量赋值。抽象工厂模式告诉我们要多用对象组合,少用继承

3.针对抽象编程,不针对实现编程

尽可能对系统中出现的各种事物抽象,从而建立基础的抽象底层,这样做使软件结构更加框架化,系统化,系统结构更加灵活,易维护,易拓展。

4.产品对象通过工厂暴露的方法创建

高内聚,低耦合。尽量避免过多的出现new关键字,抽象工厂模式对于对象解耦方面是显而易见的,在客户类,没有使用创建对象实例的语句,而是通过抽象工厂暴露的方法来获取对象实例,创建具体对象实例的工作都是具体工厂中实现的

例:薯条基类

public abstract class FrenchFries extents AbstractBaseFood implements IFood

继承了食物基类,实现了点餐接口,自己还是抽象的

5.使用场合

(1)创建产品家族,相关产品集合在一起使用的时候

(2)想要提供一个产品类库,并只想显示其接口而不是实现时

(3)通过组合的方式使用工厂时

6.工厂和抽象工厂的比较

联系:都是解耦,都是工厂模式。工厂是用来创建一个产品,抽象工厂是用来创建一个产品家族。

7.jdk中的使用

java.sql.DriverManager(数据库:Statement,PreparedStatement)

java.net.URL

java.lang.management.ManagementFactory

三.建造者模式

1.建造者模式将复杂对象的创建与表示分离,使得同样的构建过程可以创建不同的表示。

指导者(接口)建造者(实现类,实现一个接口,不同的实现类)

2.设计原则

(1)分步骤创建复杂对象要使系统功能专业而单一,降低对象与对象之间,各个功能模块之间的依赖和耦合。每个功能简单即可

(2)构建和表示分离。构建的部分实现比较灵活,外部需求变化比较大,但是获取实例对象的过程是统一的,也就是说无论外部存在多少需求,变化,斗不过是对象的表现形式不同

(3)单一职责原则。每个信息中实现不同的功能(例如手机套餐)然后试用一个统一的接口获得手机套餐实例。

3.使用场合

(1)当生成的对象产品内部对象具有复杂结构时

(2)当复杂对象需要与表示分离,可能需要创建不同的表示时

(3)当需要向客户隐藏产品内部结构的表现时

4.与抽象工厂的区别

建造者模式着重与分步骤构造一个复杂对象,而抽象工厂则着重于多个系列的产品对象即对象族的构造。建造者实在最后一步返回具体产品,抽象工厂立即返回具体产品

5.jdk中的使用

java.lang.StringBuffer

java.lang.StringBuilder

client客户端充当了指导者角色,StringBuilder同时充当了接口和具体建造者的角色

四.原型模式

1.使用克隆的方法克隆对象,实现java的cloneable接口

2.设计原则

(1)考虑产生对象的复杂度和类复用

(2)结合系统结构考虑使用浅复制还是深复制

3.使用场合

(1)产生对象过程比较复杂,初始化需要许多资源时

(2)希望框架原型和产生对象分开时

(3)同一个对象会供其他调用者同时调用访问时

4.jdk中的使用

所有类可以重载Object类的clone方法克隆对象

5.注意事项

(1)克隆对象时,原始对象的构造方法不被执行

(2)浅复制:浅复制只是复制本对象的原始数据类型,入int,float,String等,对于数组,列表和对象引用不会复制

(3)深复制:不但对原始数据类型做复制,其他也做,当然需要手动的对不是原始对象的做克隆

五.单例模式

1.类的属性域和方法可见方式有4种:public,protected,private,默认。单例采用private构造方法,这样外部就不能使用new操作符创建对象了

2.设计原则

(1)某个类只能有一个实例

(2)该类必须自行创建这个实例

(3)该类必须自行向整个系统提供这个实例

3.使用场合

该类只需要有一个的时候,可以使用单例设计模式。

4.jdk中的使用

(1)数据库链接或Socket链接收到一定的限制,保持只能有一个链接的时候。

(2)集合中的set

(3)java.lang.Runtime

提高:多例模式实现

多例模式就是存在多个对象实例,供外部应用调用,比如数据库连接池等。

路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真) RRT*算法针对传统RRT算法进行了渐进最优改进,在添加节点到搜索树的过程中进行重连选择。本文图解RRT*算法原理,并采用ROS C++、Python、Matlab三种语言实现算法,加深理解 阅读详情

相关推荐

诠视MR眼镜Unity开发设置_Unity2020.3.38

请按照如下设置Android SDK 和 Gradle。打包前先将Unity切换到Android模式。Preferences 设置。

m0_71932574的博客 603

JAVA设计模式(十) -- 建造者模式

建造者模式的定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。简言之,将构造复杂对象的过程和组成对象的部件解耦。 当要生成的产品有复杂的内部结构——比如由多个对象组成;而系统中对此产品的需求将来可能要改变产品对象的内部结构的构成,比如说产品的一些属性现在由一个小对象组 成,而更改后的型号可能需要 N个小对象组成;而且不能将产品的内部构造完全暴露给客 户程序,一是为了...

分享技术,共同进步! 372

【STM32H7实战】SDMMC总线优化与FatFs文件系统高效读写技巧

本文详细介绍了STM32H7中SDMMC总线优化与FatFs文件系统高效读写技巧,包括时钟配置、DMA传输、缓存策略等关键优化点。通过实测数据对比,展示了从2.7MB/s提升至11.8MB/s读取速度的优化效果,适用于需要高性能SD卡读写的嵌入式开发场景。

e6f7g8h9i的博客 484

生成器模式——创建型模式(3)

前言 在前两讲,我们介绍了工厂方法和抽象工厂模式,这两种模式都是完成对一个或者若干个内部结构相对简单的对象的创建工作。换句话来说,这样的对象内部之间没有明显的子部分或者说是各个子部分间的“组装”过程。然而在现实世界里,确实存在着这样的对象模型,可以将内部抽象成若干个子部分,而且需要通过一定的组建算法将它们构建在一起形成完整的最终对象。面对类似对象的创建工作,显然工厂模式已经不善长,需要追寻新的模...

weixin_30687051的博客 227

Qt中常见的面试题总结

基于Qt开发的一些常用面试题

一名热爱编程的程序员 8493

中兴B860AV2.1-A刷机避坑指南:晶晨免拆神器+安卓7.1.2固件实测

本文提供中兴B860AV2.1-A机顶盒的详细刷机教程,重点介绍使用晶晨免拆神器配合安卓7.1.2线刷固件包的实操步骤。内容涵盖刷机前的硬件确认、工具准备、软件设置、烧录全过程监控及常见问题解决,旨在帮助用户安全、高效地完成刷机,规避变砖风险,释放设备潜力。

pytorch8learner的博客 746

java设计模式4-建造者模式

建造者模式概述 使用多个简单的对象一步一步构建成一个复杂的对象。换句话说就是当一个对象有多个子对象,通过子对象来组合成该对象的方式叫做建造者模式; 使用场景 1、需要生成的对象具有复杂的内部结构。 2、需要生成的对象内部属性本身相互依赖。 意图 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示 代码实现 就拿网购来说,某个网店进行打折促销,当总价在大于200时打7折,在150到200之间时打8折,在100到150之间时打9折,不足100没有优惠。通过购买不同商品组成不同的总价并给

weixin_43520586的博客 288

ROS四旋翼无人机快速上手指南(4):阿木实验室PX4功能包飞行控制分析与讲解(重点章节)

成就更好的自己 这一章详细讲解一下阿木实验室(AMOV)的开源项目px4_command功能包,此功能包通过mavlink协议直接控制烧录px4固件的自驾仪,还融合了来自各个传感器的位姿,距离等信息,此外,功能包提供的接口向上对接应用层算法级的程序例如SLAM,kfc目标检测引导,路径规划等算法,因此,在整个无人机控制中起到了承上启下至关重要的作用。 用到的文件及工具包链接如下: AMOV实验室源码如下: https://gitee.com/theroadofengineers/px4_comman

The Road of Engineer 6171

复杂对象的组装与创建——建造者模式(三)

8.4 关于Director的进一步讨论        指挥者类Director在建造者模式中扮演非常重要的作用,简单的Director类用于指导具体建造者如何构建产品,它按一定次序调用Builder的buildPartX()方法,控制调用的先后次序,并向客户端返回一个完整的产品对象。下面我们讨论几种Director的高级应用方式:        1.省略Director       在

刘伟技术博客 2万+

数据分析之AB测试基础知识

在 A/B 测试中,零假设是两组的指标是相同的,当假设检验推断出两组指标不同,但事实上两组指标相同时,就是第一类错误。

qq_45727498的博客 561

I2C 协议在 Camera Sensor 驱动中的典型配置方式与实战应用

在 Linux Camera 系统中,Sensor 与主控之间的控制信令几乎都依赖于 I2C 总线完成。I2C 协议不仅承载了 Sensor 初始化、模式切换、AE/AF 等关键功能的指令传输,也是构建 v4l2\_subdev 驱动框架的核心基础。本文将围绕 Sensor 驱动中的 I2C 通信机制展开分析,从设备树节点声明到驱动代码中的传输接口调用,结合主流平台工程实战经验,详解如何构建稳定、高效、可维护的 I2C 控制路径。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1713

软件测试——基础练习(期末复习)

软件测试基础 1、测试是为了验证软件已正确地实现了用户的要求。错 2、测试人员说:“没有可运行的程序,我无法进行测试工作”。错 3、在软件开发过程中,若能推迟暴露其中的错误,则为修复和改进错误所花费的代价就会降低。错 4、软件测试的目的是(B) A、 避免软件开发中出现的错误 B、 发现软件开发中出现的错误 C、 尽可能发现并排除软件中潜藏的错误,提高软件的可靠性 D、 修改软件中出现的错误 5、下列软件属性中,软件产品首要满足的应该是(A) A、 功能需求 B、 性能需求 C、 可扩展性和灵活性 D、 容

lthahaha的博客 7万+

AI上推荐 之 隐语义模型(LFM)和矩阵分解(MF)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 1万+

JavaScript设计模式读书笔记(一)=> 创建型设计模式

简单工厂模式 为了尽量减少地创建全局变量,同一类对象在不同需求中的重复性使用。通过对简单工厂来创建一些对象,可以让这些对象共用一些资源而又私有一些资源。对于简单工厂模式来说,它的使用场合通常也就限制在创建单一对象。 // e.g. function createPop(type, text) { const o = {}; o.content = text; o.show = func...

翾的博客 894

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

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

设计模式学习笔记——创建型模式

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑,使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。创建型模式包括五种设计模式:工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)下面分别归纳一下这五...

zengyun_cool_2008的专栏 255

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

设计模式学习笔记——创建型设计模式

声明:本学习笔记阅读《掌握设计模式:23种经典模式实践、选择、价值与思想》记录,书的作者:Java全栈布道师。

weixin_44420750的博客 1485

设计模式学习笔记二:创建型模式

4.1 定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类4.2 新概念:产品等级结构(产品类型)–产品的继承结构,如父类抽象类电视机,其子类有海尔电视机、海信电视机、TCL电视机4.3 新概念:产品族(品牌)–同一个工厂生产的,位于不同产品等级结构中的一组产品,如:海尔电器工厂生产海尔电视机、海尔电冰箱等。

itman1010的博客 822

java设计模式笔记-创建型模式

创建型模式

white_while的博客 836

图说设计模式-创建型设计模式笔记

创建型模式 简单工厂模式 模式定义 简单工厂模式(Simple Factory Pattern),又称为静态工厂方法(Static Factory Method)模式。 在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 模式结构 简单工厂模式包含以下角色: Factory: 负责实现创建所有实例的内部逻辑。 Product: 所创建的所有对象的父类,负责描述所有实例所共有的公共接口。 ConcreteProduct:

Snowzhao的博客 991

【设计模式笔记20】:创建型设计模式对比总结

创建型设计模式概述: 创建型模式专注于对象创建过程的抽象,将对象创建与使用分离,提升代码清晰度和可维护性。遵循单一职责和开闭原则,通过封装创建逻辑降低耦合度。GoF23种模式中包含5种创建型模式:工厂方法、抽象工厂、单例、建造者和原型模式。按处理对象可分为类创建型(如工厂方法)和对象创建型(如抽象工厂)。各模式适用场景不同:单例确保唯一实例,工厂方法处理单一产品扩展,抽象工厂管理产品族,建造者分步构建复杂对象。建议初学者从简单工厂和单例入手,根据实际需求权衡设计复杂度,避免过度设计。

lyh2004_08的博客 785

Python学习笔记(5)Python的创建型设计模式

单例模式可以用Python的模块来实现,没有特别的地方。由于Python可以动态的访问类对象,所以原型模式也什么意义(python提供了内置的copy方法)所以最有用的是抽象工厂模式工厂方法模式建造者模式。

立志成为炼丹师? 1203

JavaScript设计模式笔记之创建型设计模式

创建型设计模式 1、简单工厂模式 当类太多,并且这些类有很多相似之处,那么可以用一个工厂函数将这些类整合起来,以后想要创建这些类之一时,可直接调用工厂函数传入参数,来选择你想创建的类。 var Benz = function() { this.brand = 'Benz'; } Benz.prototype.getBrand = function() {} var BMW = function() { this.brand = 'BMW'; } Benz.prototype.getBran

weixin_41559882的博客 159

《设计模式》读书笔记——创建型模式

设计模式创建模式定义: 创建型模式抽象了实例化过程。他们帮助一个系统独立于如何创建、组合和表示它的那些对象 一个类创建型模式使用继承改变被实例化的类,而一个对象创建模式是将实例化委托给另一个对象 类模式Factory Method 工厂模式意图定一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类动机:主要解决接口选择的问题。适用性

qq_32641095的博客 468

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

创建型设计模式

weixin_43228670的博客 920

GOF设计模式笔记之创建型模式

这里是篇关于gof设计模式的笔记,记录了五种创建模型的基本特点,这是篇笔记,大家慎重进入

白嫩豆腐 824

【设计模式笔记09】:创建型设计模式概述与简单工厂模式

创建型设计模式将对象创建与使用分离,提高系统灵活性和结构清晰度。主要包括工厂模式(简单/工厂方法/抽象工厂)、单例模式、原型模式和建造者模式。其中简单工厂模式通过一个工厂类根据参数创建不同产品实例,包含工厂角色、抽象产品角色和具体产品角色三个核心组件。该模式隐藏了具体产品类的创建细节,使客户端只需知道产品共同接口,符合单一职责原则。典型实现中工厂类通过静态方法返回抽象产品类型的实例,具体产品类则实现该抽象产品接口或继承抽象类。

lyh2004_08的博客 1412

创建型设计模式学习笔记

创建型设计模式笔记

qq_42120843的博客 237
上一篇: prometheus+grafana监控springboot集群项目
下一篇: 结构型模式的设计模式笔记
ZERO_No1
博客等级 码龄12年 14粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值