台前网站建设公司域名备案中网站可以开通

web/2025/10/7 2:24:34/文章来源:
台前网站建设公司,域名备案中网站可以开通,网站续费如何做分录,进入百度首页什么是建造者设计模式#xff1f;和工厂设计模式有什么区别 建造者设计模式#xff08;Builder Design Pattern#xff09;和工厂设计模式#xff08;Factory Design Pattern#xff09;都是面向对象设计中的创建型模式#xff0c;但它们解决的问题和应用场景有所不同。…什么是建造者设计模式和工厂设计模式有什么区别 建造者设计模式Builder Design Pattern和工厂设计模式Factory Design Pattern都是面向对象设计中的创建型模式但它们解决的问题和应用场景有所不同。 建造者设计模式 建造者设计模式旨在解决复杂对象的创建问题特别是当对象的构造过程非常复杂需要一步步构建并且具有多个可选参数或配置选项时。该模式的主要思想是将对象的构建过程与表示分离使得同样的构建过程可以创建不同的表示。 主要组件 Director指挥者负责使用构造器接口来构建一个复杂对象。Builder构造器定义对象的构建过程包括设置属性、添加部件等方法。ConcreteBuilder具体构造器实现构造器接口实现具体的构建方法。Product产品最终构建出的复杂对象。 建造者模式的优点是将对象的构建过程封装使得代码更加清晰同时能够灵活地构建不同的对象。 工厂设计模式 工厂设计模式旨在通过一个工厂来创建对象将对象的创建过程封装起来客户端代码无需直接调用构造函数。它分为简单工厂、工厂方法和抽象工厂等形式。 主要组件 Factory工厂负责创建对象的接口或类。ConcreteFactory具体工厂实现工厂接口实际创建对象的地方。Product产品工厂创建的对象。 工厂模式的主要优点是将对象的创建和客户端解耦客户端只需通过工厂来获取对象不需要关心对象的具体创建过程。 区别 目的不同 建造者模式关注于创建复杂对象的构建过程将构建过程和表示分离。工厂模式关注于对象的创建将对象的创建过程封装在工厂中以便在客户端中使用。 复杂性 建造者模式通常用于创建复杂对象因为对象的构建过程可能涉及多个步骤和配置选项。工厂模式可以用于创建不同类型的对象包括简单对象和复杂对象。 关注点 建造者模式更关注于对象的**构建过程**尤其适合需要按照一定步骤构建对象的情况。工厂模式更关注于对象的创建强调封装创建过程便于对象创建的管理。 综上所述建造者模式适用于构建复杂对象而工厂模式适用于创建对象的封装和管理。选择适当的模式取决于你的设计需求和对象创建的复杂性。 用java分别给出一个建造者和工厂例子 当实现建造者模式和工厂模式时我们可以以一个简单的示例来说明。假设我们要创建一个电脑对象分别使用建造者模式和工厂模式。 建造者模式示例 // 产品类 class Computer {private String cpu;private String memory;private String storage;public void setCPU(String cpu) {this.cpu cpu;}public void setMemory(String memory) {this.memory memory;}public void setStorage(String storage) {this.storage storage;}// 其他方法... }// 抽象建造者 interface ComputerBuilder {void buildCPU();void buildMemory();void buildStorage();Computer getResult(); }// 具体建造者 class GamingComputerBuilder implements ComputerBuilder {private Computer computer new Computer();//产品类对象public void buildCPU() {computer.setCPU(Intel Core i7);}public void buildMemory() {computer.setMemory(16GB RAM);}public void buildStorage() {computer.setStorage(1TB SSD);}public Computer getResult() {return computer; //需要一步步创建具体怎么创建指挥者说了算 最后通过此方法返回Computer产品对象} }// 指挥者 class Director {private ComputerBuilder builder;//接口类型public Director(ComputerBuilder builder) {this.builder builder;}public void construct() {builder.buildCPU(); //指挥建造者来一步步创建builder.buildMemory();builder.buildStorage();} }// 客户端代码 public class BuilderExample {public static void main(String[] args) {ComputerBuilder builder new GamingComputerBuilder();//父类引用这里是接口指向子类对象抽象建造者引用指向具体建造者Director director new Director(builder);//builder建造者对象传入指挥者对象director.construct();//指挥者调用创建方法此时指挥者已经 指挥建造者builder完成了创建即construct()Computer computer builder.getResult();//建造者对象调用方法 返回产品类对象// 使用构建好的电脑对象System.out.println(Gaming Computer: computer.toString());} } 工厂模式示例 // 产品类 class Computer {private String type;private String cpu;private String memory;private String storage;public Computer(String type, String cpu, String memory, String storage) {this.type type;this.cpu cpu;this.memory memory;this.storage storage;}// 其他方法... }// 抽象工厂 interface ComputerFactory {Computer createComputer(); }// 具体工厂 class GamingComputerFactory implements ComputerFactory {public Computer createComputer() {return new Computer(Gaming, Intel Core i7, 16GB RAM, 1TB SSD);} }// 客户端代码 public class FactoryExample {public static void main(String[] args) {ComputerFactory factory new GamingComputerFactory();//父类引用这里是接口指向子类对象Computer computer factory.createComputer();//从具体工厂中直接拿对象// 使用工厂创建的电脑对象System.out.println(Gaming Computer: computer.toString());} } 在上述示例中建造者模式通过在建造者接口中定义构建步骤来构建复杂对象而工厂模式通过工厂接口的具体实现来创建对象。两者在对象创建的过程和角色分配上有所不同。 源码应用 创建者设计模式在源码中有广泛的使用常见 1、jdk中如StringBuilder和StringBuffer他们的实现不是完全按照标准的创建者设计模式设计但也是一样的思想 这两个类用于构建和修改字符串。它们实现了创建者模式允许客户端通过方法链来修改字符串。这些类在性能上优于 String 类因为它们允许在同一个对象上执行多次修改而不需要每次修改都创建一个新的对象。 StringBuilder builder new StringBuilder();builder.append(Hello).append( ).append(World!);String result builder.toString();2、在ssm源码中很多类都使用创建者设计模式如Spring中的 BeanDefinitionBuilder 类mybatis中的 SqlSessionFactoryBuilder 、XMLConfigBuilder 、 XMLMapperBuilder 、 XMLStatementBuilder 、CacheBuilder 等因为实现都比较简单就不带着大家一个一个看了。 3、使用lombok简单的实现创建者设计模式 Lombok 是一个 Java 库它可以简化代码提高开发效率尤其是在实现模式和生成常用方法例如 getter、setter、equals、hashCode 和 toString时。要使用 Lombok 简单地实现创建者设计模式您可以使用 Builder 注解。这将为您自动生成创建者类和相关方法。以下是一个使用 Lombok 的创建者设计模式的例子 首先确保您已经在项目中引入了 Lombok 库。对于 Maven 项目在 pom.xml 文件中添加以下依赖 dependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.20/versionscopeprovided/scope/dependency /dependencies然后创建一个使用 Lombok 的创建者设计模式的类 Getter ToString Builderpublic class Person {private String name;private int age;private String address; }在上面的示例中我们使用了 Builder 注解来自动生成创建者类和相关方法。此外我们还使用了 Getter 注解来自动生成 getter 方法以及 ToString 注解来自动生成 toString 方法。 现在您可以使用自动生成的创建者类创建 Person 对象 Person person Person.builder().name(John Doe).age(30).address(123 Main St).build();通过 Lombok您可以轻松地实现创建者设计模式减少样板代码提高代码可读性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress如何添加百度商桥wordpress 手机端优化

简介 TPC-C是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统。 Tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于MySQL基准测试。其源码放在launchpad上&#xff0c…

除了Joomla用什么做网站好怎么给你新网站做seo

文章目录 继承的概念及定义继承的概念继承定义 基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态成员复杂的菱形继承及菱形虚拟继承菱形继承菱形虚拟继承 继承的总结和反思笔试面试题 继承的概念及定义 继承的概念 继承(inheritance) 机制是面…

来凡网站建设公司石岩企业网站建设

compose模块 模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 docker run 相关参数的含义都是类似的。 默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。 version: "3&quo…

河北住房和城乡建设厅网站卡百度推广seo效果怎么样

文章目录 链表1、基本介绍2、单向链表2.1 带头节点的单向链表测试类:链表实现类: 2.2 不带头节点的单向链表2.3 练习测试类:链表实现类: 3、双向链表测试类:双向链表实现类: 4、单向环形链表**测试类**&…

莆田个人外贸网站建设wordpress插件论坛

缓存击穿 缓存击穿是指在高并发场景下,缓存中的某个 key 失效,此时大量请求同时涌入数据库查询该 key 的数据,导致数据库瞬间压力过大,甚至宕机。缓存击穿的最佳解决方案是使用互斥锁,令只有一个线程可以从数据库中查…

如果网站打开非常缓慢搜索引擎营销是什么意思

一、janus介绍 Janus 官网:https://janus.conf.meetecho.com/index.html 参考文档:https://github.com/meetecho/janus-gateway Janus是一个开源的WebRTC网关,可用于构建实时通信应用程序。它提供了音频、视频和数据传输的功能,可…

论文收录网站建设网站盈利分析

jQuery 的 .toggleClass() 方法用于在选定的元素上添加或移除一个或多个类。这个方法会检查每个元素中指定的类,如果类不存在,则添加它;如果类已设置,则删除它。这被称为切换效果。此外,可以通过使用 "switch" 参数来规定只删除或只添加类。 语法 (selector).…

网站做成app客户端百度小说排行榜风云榜单

摘要:正筹划推进旗下手机安全产品出海揽客。6月22日,腾讯无线安全产品部副总经理胡振东在上海表示,腾讯手机管家已推出了安卓国际版,下决心进军国际市场。 腾讯(00700.HK)正筹划推进旗下手机安全产品出海揽客。6月22日&#xff0c…

建设银行网站 个人客户端甘肃第三建设集团公司

1688平台商品详情接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取1688商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口,通过…

选课网站开发广告联盟app

本文针对用table显示数据&#xff0c;主要是table的线条颜色处理。 1.下面的这个方法&#xff0c;比较试用于单一的table不适用于table 套着table。这样的话在某些浏览器上浏览是有差别的。table套table 有可能会出现线条加粗的情况。 <style type"text/css"> …

河北省建设厅网站登陆设置设计师培训班多少钱

《幼儿园管理学》考评作业 一、填空题 &#xff08;1&#xff09;我国学前教育各级机构权限的划分制度是 、 、 。 &#xff08;2&#xff09;管理内容的五大要素是 、 、 、 、 。 &#xff08;3&#xff09;幼儿园总务工作的特点是 、 、 、 。 &#xff08;4&#xff09;园长…

c 网站开发大气家具营销型网站源码

分支语句if1.if基本语法2 if语句的嵌套3 比较运算符号4 逻辑运算符&#xff1a;5 整数随机数初应用6 tip7.断言assert1.if基本语法 if语句开发中的应用场景&#xff1a;如果条件成立做一件事情&#xff0c;如果条件不成立做另外一件事情。有了if语句&#xff0c;程序有了分支.…

微信网站前景如何建设一个双语的网站

我的需求是改变url地址的后缀&#xff0c;其他不改&#xff0c;所以直接for循环&#xff0c;变换数字就行 也就是 字符串变量字符串 想着改变后缀就能批量爬图。但是原本的想法是错误的 for num in range(2,8):url"http://www.win4000.com/wallpaper_detail_160877_"…

网站建设中管理员登录的代码怎么写wordpress如何多用户

eslint quo对我而言&#xff0c; JUnit是Java Universe中最重要的库。 但是我认为它的新版本已经过期。 通过将方法定义作为测试定义的方法&#xff0c;JUnit非常灵活&#xff0c;需要各种技巧……抱歉的功能&#xff0c;要做您实际上应该能够使用的基本&#xff08;Java 8&…

贵阳企业自助建站系统沙坪建设集团网站

在近期于伦敦Skills Matter举行的DDD eXchange 2018会议上&#xff0c;Martin Schimak认为在最近几年间&#xff0c;领域事件引发了越来越多的讨论&#xff0c;但是我们对命令也应如此&#xff0c;在这次会议上他讨论了微服务领域的事件、命令以及长周期的服务&#xff0c;以及…

vs2008 手机网站开发哈尔滨网建公司有哪些

Easyspy是一款网络入侵检测和流量实时监控软件。作为一个入侵检测系统&#xff0c;用来快速发现并定位诸如ARP攻击、DOS/DDOS、分片IP报文攻击等恶意攻击行为&#xff0c;帮助发现潜在的安全隐患。Easyspy又是一款Sniffer软件&#xff0c;用来进行故障诊断&#xff0c;快速排查…

做算法题的网站百度一下你就知道网页

本地安装的OracleXEUniv—oracle特别版&#xff0c;免费用户可以自由使用&#xff0c;但有连接数量和存储限制。最近遇到一个问题&#xff0c;当我的SSM项目连接本地数据库oracleXE后&#xff0c;我的navicat再连接时就会报错ORA-12516&#xff0c;就是oracle的会话数超出了限制…

泛微e8做网站门户dede 电商网站

我在上一篇文章中&#xff0c;提到了目前的认证方式存在一些问题&#xff0c;需要替换为一种更简单的认证方式。 但是最后发现&#xff0c;认证这个实在是没有办法简单化&#xff0c;认证本身又是另外一个不小的话题了&#xff0c;因此关于这一点先留个坑。 本文先讨论一下另外…

钦州建设局网站wordpress去除仪表盘

03贪心&#xff1a;摆动序列 376. 摆动序列 局部最优&#xff1a;删除单调坡度上的节点&#xff08;不包括单调坡度两端的节点&#xff09;&#xff0c;那么这个坡度就可以有两个局部峰值。 整体最优&#xff1a;整个序列有最多的局部峰值&#xff0c;从而达到最长摆动序列。…