wordpress副标题怎么写/官网整站优化

wordpress副标题怎么写,官网整站优化,外国人在中国做视频网站,电商平台证明怎么开文章目录 前言简单工厂模式优缺点 工厂方法模式优缺点 抽象工厂优缺点 前言 工厂模式是一种创建型设计模式,其作用是将对象的创建和使用进行解耦,用于提高代码的可维护性和可扩展性。通过提供给外部负责创建对象的工厂类,外部类通过工厂来创…

文章目录

  • 前言
  • 简单工厂模式
    • 优缺点
  • 工厂方法模式
    • 优缺点
  • 抽象工厂
    • 优缺点

前言

工厂模式是一种创建型设计模式,其作用是将对象的创建和使用进行解耦,用于提高代码的可维护性和可扩展性。通过提供给外部负责创建对象的工厂类,外部类通过工厂来创建对象。工厂模式包括简单工厂、工厂方法以及抽象工厂三种模式。

简单工厂模式

简单工厂模式如其名,非常简单,定义一个工厂类,提供给外部创建对象的方法,会根据传入的参数创建不同的对象。

代码实现:

/*水果接口*/
public interface Fruit {
}
/* 水果接口的两个具体的实现类 */
public class Apple implements Fruit{
}
public class Pear implements Fruit{
}
/* 创建对象的工厂*/
public class FruitFactory {public Fruit creat(String fruit){if (fruit.equals("apple")){return new Apple();}else if (fruit.equals("pear")){return new Pear();}throw  new IllegalArgumentException("参数值输入不正确");}
}

优缺点

优点:代码实现简单,如果需要扩展对象的创建不需要额外创建类
缺点:不符合开闭原则,若要扩展对象的创建会修改工厂类的代码
开闭原则:对扩展是开放的,对修改是关闭的。在不修改原代码的前提下进行行为的扩展。

工厂方法模式

工厂方法模式,其实现需要定义一个接口/抽象类以及创建对象的抽象方法,并且定义多个具体工厂,继承或者实现抽象工厂类,并重写其抽象方法,完成具体对象的创建。
代码实现:

/*抽象工厂类*/
public interface IFruitFactory {abstract Fruit create();
}/* 苹果工厂类*/
public class AppleFactory implements IFruitFactory{@Overridepublic Fruit create() {return new Apple();}
}
/*梨工厂类 */
public class PearFactory implements IFruitFactory{@Overridepublic Fruit create() {return new Pear();}
}
/*测试*/
public class Test {public static void main(String[] args) {// 创建对应对象的工厂类IFruitFactory factory=new AppleFactory();// 根据具体工厂的创建行为创建对象Fruit fruit = factory.create();System.out.println(fruit);}
}

优缺点

优点:符合开闭原则,当需要扩展对象的创建时,只需要扩展一个工厂类即可。
缺点:每次进行扩展都需要定义一个新的类

抽象工厂

对于一些存在关系的类,例如公司和产品,一个公司有许多产品。举个具体的例子,小米和苹果是两个公司,它们有很多相同的产品种类,例如手机、电脑等等。而抽象工厂模式则是定义一个抽象工厂类,其包含多个产品创建的抽象方法,通过创建具体工厂继承或实现抽象工厂,重写其方法完成产品的具体创建。

/*汽车、手机、电脑的接口*/
public interface Computer {abstract void go();
}
public interface Phone {abstract void begin();
}
public interface Car {abstract void start();
}
/*具体的实现类*/
public class MiCar implements Car{@Overridepublic void start() {System.out.println("小米汽车启动");}
}
public class MiComputer implements Computer{@Overridepublic void go() {System.out.println("小米电脑开机");}
}
public class MiPhone implements Phone{@Overridepublic void begin() {System.out.println("小米手机启动");}
}
苹果的实现类省略。。。/*我们不妨定义一个抽象工厂,其包含公司各个产品的创建方法*/
public abstract ICompany {abstract Car getCar();abstract Computer getComputer();abstract Phone getPhone();
}
/*具体工厂*/
public class MiCompany extend ICompany{@Overridepublic Car getCar() {return new MiCar();}@Overridepublic Computer getComputer() {return new MiComputer();}@Overridepublic Phone getPhone() {return new MiPhone();}
}public class AppleCompany extend ICompany{@Overridepublic Car getCar() {return new AppleCar();}@Overridepublic Computer getComputer() {return new AppleComputer();}@Overridepublic Phone getPhone() {return new ApplePhone();}
}测试:
public class Test {
/*指定具体的工厂类以及方法创建对象*/public static void main(String[] args) {ICompany company=new AppleCompany();Car car = company.getCar();car.start();ICompany company1=new MiCompany();Computer computer = company1.getComputer();computer.go();}
}

抽象工厂和工厂方法相比,其实两者很像但是也存在区别,两者都是创建抽象类,以及创建具体的实现类,由实现类完成对象的具体的创建。两者的区别在于工厂方法针对一个接口,抽象工厂针对一组存在依赖关系的接口。

优缺点

优点:可以减少类的创建,对于上面举得例子,我们完成每个具体对象的创建其实只定义了三个类,一个是抽象工厂,另外两个是具体的工厂。如果我们使用工厂方法来做,需要定义手机抽象工厂、汽车抽象工厂、电脑抽象工厂,以及小米手机具体工厂、苹果手机具体工厂…会多了很多类。
缺点:不符合开闭原则,并且扩展比较复杂,如果新增一些其他行为,例如电视的创建,就需要修改抽象工厂以及具体工厂的代码。

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

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

相关文章

FFMPEG利用H264+AAC合成TS文件

本次的DEMO是利用FFMPEG框架把H264文件和AAC文件合并成一个TS文件。这个DEMO很重要,因为在后面的推流项目中用到了这方面的技术。所以,大家最好把这个项目好好了解。 下面这个是流程图 从这个图我们能看出来,在main函数中我们主要做了这几步&…

sqli-lab靶场学习(七)——Less23-25(关键字被过滤、二次注入)

前言 之前的每一关,我们都是在末尾加上注释符,屏蔽后面的语句,这样我们只要闭合了区间之后,差不多就是为所欲为的状态。但如果注释符不生效的情况下,又该如何呢? Less23(注释符被过滤&#xff…

Self-Supervised Prompt Optimization

论文:[2502.06855] Self-Supervised Prompt Optimization 仓库:GitHub - Airmomo/SPO: SPO | Self-Supervised Prompt Optimization 自监督提示优化(SPO) 创新点 成对比较评估 输出指导优化 全文介绍 背景 随着大语言模型…

AI-Ollama本地大语言模型运行框架与Ollama javascript接入

1.Ollama Ollama 是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。 Ollama 提供了一个简单的方式来加载和使用各种预训练的语言模型,支持文本生成、翻译、代码编写、问答等多种…

分布式多卡训练(DDP)踩坑

多卡训练最近在跑yolov10版本的RT-DETR,用来进行目标检测。 单卡训练语句(正常运行): python main.py多卡训练语句: 需要通过torch.distributed.launch来启动,一般是单节点,其中CUDA_VISIBLE…

LLM大型语言模型(一)

1. 什么是 LLM? LLM(大型语言模型)是一种神经网络,专门用于理解、生成并对人类文本作出响应。这些模型是深度神经网络,通常训练于海量文本数据上,有时甚至覆盖了整个互联网的公开文本。 LLM 中的 “大” …

蓝桥杯备考:动态规划dp入门题目之数字三角形

依然是按照动态规划dp的顺序来 step1:定义状态表示 f[i][j]表示的是到,j这个坐标的结点时的最大权值 step2: 定义状态方程 i,j坐标可能是从i-1 j-1 到i,j 也可能是从i-1 j到 i,j 所以状态方程应该是 f[i][j] max(f[i-1][j-1],f[i-1][j]) a[i][j] step3:初始化…

HarmonyOS NEXT开发进阶(十一):应用层架构介绍

文章目录 一、前言二、应用与应用程序包三、应用的多Module设计机制四、 Module类型五、Stage模型应用程序包结构六、拓展阅读 一、前言 在应用模型章节,可以看到主推的Stage模型中,多个应用组件共享同一个ArkTS引擎实例;应用组件之间可以方…

deepseek+mermaid【自动生成流程图】

成果: 第一步打开deepseek官网(或百度版(更快一点)): 百度AI搜索 - 办公学习一站解决 第二步,生成对应的Mermaid流程图: 丢给deepseek代码,或题目要求 生成mermaid代码 第三步将代码复制到me…

Solon AI —— RAG

说明 当前大模型与外部打交道的方式有两种,一种是 Prompt,一种是 Fuction Call。在 Prompt 方面,应用系统可以通过 Prompt 模版和补充上下文的方式,调整用户输入的提示语,使得大模型生成的回答更加准确。 RAG RAG &…

STM32——USART—串口发送

目录 一:USART简介 二:初始化USART 1.开启时钟 2.代码 三:USART发送数据 1.USART发送数据函数 2.获取标志位的状态 3.代码 4.在main.c内调用 5.串口调试 1.串口选择要与设备管理器中的端口保持一致 2.波特率、停止位等要与前面…

基于SpringBoot的在线骑行网站的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

通义万相2.1:开启视频生成新时代

文章摘要:通义万相 2.1 是一款在人工智能视频生成领域具有里程碑意义的工具,它通过核心技术的升级和创新,为创作者提供了更强大、更智能的创作能力。本文详细介绍了通义万相 2.1 的背景、核心技术、功能特性、性能评测、用户反馈以及应用场景…

3.3.2 Proteus第一个仿真图

文章目录 文章介绍0 效果图1 新建“点灯”项目2 添加元器件3 元器件布局接线4 补充 文章介绍 本文介绍:使用Proteus仿真软件画第一个仿真图 0 效果图 1 新建“点灯”项目 修改项目名称和路径,之后一直点“下一步”直到完成 2 添加元器件 点击元…

极狐GitLab 正式发布安全版本17.9.1、17.8.4、17.7.6

本分分享极狐GitLab 补丁版本 17.9.1、17.8.4、17.7.6 的详细内容。这几个版本包含重要的缺陷和安全修复代码,我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS,技术团队已经进行了升级,无需用户采取任何…

QT——对象树

在上一篇博客我们已经学会了QT的坏境安装以及打印一个hello world,但是如果有细心的朋友看了代码,就会发现有一个严重的问题,从C语法看来存在内存泄漏。 上面的代码实际上并没有发送内存泄漏,是不是觉得有点奇怪?大家有…

深度学习之-“深入理解梯度下降”

梯度下降是机器学习和深度学习的核心优化算法,几乎所有的模型训练都离不开它。然而,梯度下降并不是一个单一的算法,而是一个庞大的家族,包含了许多变体和改进方法。本文将从最基础的梯度下降开始,逐步深入学习&#xf…

力扣-字符串

字符串不能被修改,所以如果有想修改字符串的行为,需要转换为StringBuilder StringBuilder里也有很多封装方法String没有,比如reverse() StringBuilder sb new StringBuilder();// 添加字符串 sb.append("Hello"); sb.append(&qu…

Ollama+Deepseek-R1+Continue本地集成VScode

一、OllamaDeepseek-R1Continue本地集成VScode 1)安装前知识点 Continue 介绍 详情可参照官网: continue官网 Continue 是 Visual Studio Code 和 JetBrains 中领先的开源 AI 代码助手。 •在侧边栏中进行聊天以理解和迭代代码。 •自动补全&#…

风虎云龙R87与RH87八卡服务器震撼首发

在科技迅猛发展的今天,人工智能(AI)领域正以前所未有的速度改变着世界。从内容创作的智能化,到智能客服的广泛应用,AI技术已经深入到我们生活的方方面面。而这一切的背后,都离不开高性能算力设备的强大支撑…