做网站一个月能挣多少钱洛阳做网站哪家便宜

news/2025/10/1 11:01:35/文章来源:
做网站一个月能挣多少钱,洛阳做网站哪家便宜,甘州区住房和城乡建设局网站,简单电子商务网站建设1. 适配器模式 (Adapter Pattern) 适配器模式是一种结构型设计模式#xff0c;旨在将一个类的接口转换成客户端所期待的另一个接口#xff0c;从而使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通常用于需要复用现有类但其接口与要求不匹配的情况。 1.1…1. 适配器模式 (Adapter Pattern) 适配器模式是一种结构型设计模式旨在将一个类的接口转换成客户端所期待的另一个接口从而使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通常用于需要复用现有类但其接口与要求不匹配的情况。 1.1 适配器模式的概念和作用 适配器模式允许接口不兼容的类可以相互合作其作用在于解决不同接口之间的兼容性问题使得原本不兼容的类可以协同工作。它允许我们创建一个包装器 (Adapter)该包装器实现了客户端所期待的目标接口并将调用转发给被包装对象。 1.2 对象适配器和类适配器的区别 在适配器模式中有两种常见的实现方式对象适配器和类适配器。 对象适配器适配器持有被适配对象的实例并在适配器中调用被适配对象的方法来实现目标接口。类适配器适配器继承了被适配对象同时实现了目标接口从而使得适配器可以作为被适配对象的子类被使用。 1.3 适配器模式的结构和实现 适配器模式的结构包括目标接口 (Target)、适配器 (Adapter)、被适配对象 (Adaptee)。 // 目标接口 interface Target {void request(); }// 被适配对象 class Adaptee {public void specificRequest() {System.out.println(Adaptees specificRequest called);} }// 类适配器 class ClassAdapter extends Adaptee implements Target {Overridepublic void request() {specificRequest();} }// 对象适配器 class ObjectAdapter implements Target {private Adaptee adaptee;public ObjectAdapter(Adaptee adaptee) {this.adaptee adaptee;}Overridepublic void request() {adaptee.specificRequest();} }1.4 适配器模式的优缺点 优点 使得客户端可以调用不兼容接口的对象。可以封装已有的类提高代码复用性。 缺点 类适配器需要多重继承不够灵活只能适配适配者的接口。对象适配器需要额外的对象引用增加了系统的复杂度。 1.5 适配器模式在实际项目中的应用场景 适配器模式常用于以下场景 已有类的接口与现有系统不兼容。在不破坏封装性的前提下需要将一个类适配到另一个接口。需要复用一个类但其接口与其他类不兼容。 2. 桥接模式 (Bridge Pattern) 桥接模式是一种结构型设计模式旨在将抽象部分与实现部分分离使它们可以独立地变化。桥接模式通过将抽象部分和实现部分分开使它们可以独立地进行扩展和变化从而降低它们之间的耦合度。 2.1 桥接模式的概念和作用 桥接模式的核心思想是将抽象与实现分离使它们可以独立变化相互之间解耦。这样一来抽象部分和实现部分可以分别进行扩展而不会相互影响从而提高了系统的灵活性和可扩展性。 2.2 桥接模式的结构和实现 在桥接模式中有两个重要的角色抽象类 (Abstraction) 和实现类 (Implementor)。抽象类定义了抽象部分的接口而实现类则负责实现抽象部分的具体功能。 // 抽象类 abstract class Abstraction {protected Implementor implementor;public Abstraction(Implementor implementor) {this.implementor implementor;}public abstract void operation(); }// 实现类接口 interface Implementor {void operationImpl(); }// 具体实现类A class ConcreteImplementorA implements Implementor {Overridepublic void operationImpl() {System.out.println(ConcreteImplementorA operationImpl called);} }// 具体实现类B class ConcreteImplementorB implements Implementor {Overridepublic void operationImpl() {System.out.println(ConcreteImplementorB operationImpl called);} }// 桥接模式的具体实现 class RefinedAbstraction extends Abstraction {public RefinedAbstraction(Implementor implementor) {super(implementor);}Overridepublic void operation() {implementor.operationImpl();} }2.3 桥接模式的优缺点 优点 分离抽象部分和实现部分使得系统更加灵活。可以独立地扩展抽象部分和实现部分。符合开闭原则对扩展开放对修改关闭。 缺点 增加了系统的复杂度需要同时设计抽象类和实现类的层次结构。 2.4 桥接模式在实际项目中的应用场景 桥接模式常用于以下场景 当一个类需要多个变化维度时使用桥接模式可以将各个维度分离使得每个维度可以独立变化。当需要对抽象部分和实现部分进行独立扩展时可以使用桥接模式。 3. 组合模式 (Composite Pattern) 组合模式是一种结构型设计模式它允许将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户可以统一对待单个对象和组合对象从而简化了客户端的代码。 3.1 组合模式的概念和作用 组合模式的核心思想是将对象组织成树形结构使得客户端可以统一处理单个对象和组合对象。这样一来用户可以像处理单个对象一样处理组合对象无需关心其内部结构。 3.2 组合模式的结构和实现 在组合模式中有两个重要的角色组件 (Component) 和叶子节点 (Leaf)、容器节点 (Composite)。 // 抽象组件类 interface Component {void operation(); }// 叶子节点类 class Leaf implements Component {Overridepublic void operation() {System.out.println(Leaf operation called);} }// 容器节点类 class Composite implements Component {private ListComponent children new ArrayList();public void add(Component component) {children.add(component);}public void remove(Component component) {children.remove(component);}Overridepublic void operation() {for (Component component : children) {component.operation();}} }3.3 组合模式的优缺点 优点 统一对待单个对象和组合对象简化了客户端代码。可以动态地增加或删除组合对象更灵活。 缺点 增加了系统的复杂性需要设计额外的层次结构。不太容易限制组合对象的类型。 3.4 组合模式在实际项目中的应用场景 组合模式常用于以下场景 表示树形结构的数据如文件系统、组织架构等。图形界面中的布局管理器将控件组织成嵌套的层次结构。菜单管理系统将菜单项和子菜单组织成树形结构。 4. 装饰器模式 (Decorator Pattern) 装饰器模式是一种结构型设计模式允许向现有对象动态地添加新功能同时又不改变其结构。这种模式对于扩展类的功能非常有用同时又保持了类的简单性和可读性。 4.1 装饰器模式的概念和作用 装饰器模式允许在不改变现有对象结构的情况下动态地添加新功能。它通过创建一个装饰器类该类包含一个指向原始对象的引用并实现与原始对象相同的接口。通过将装饰器类的对象包裹在原始对象周围可以逐步添加新的行为。 4.2 装饰器模式的结构和实现 在装饰器模式中有以下几个关键角色组件 (Component)、具体组件 (ConcreteComponent)、装饰器 (Decorator)、具体装饰器 (ConcreteDecorator)。 // 抽象组件类 interface Component {void operation(); }// 具体组件类 class ConcreteComponent implements Component {Overridepublic void operation() {System.out.println(ConcreteComponent operation called);} }// 抽象装饰器类 abstract class Decorator implements Component {protected Component component;public Decorator(Component component) {this.component component;}Overridepublic void operation() {component.operation();} }// 具体装饰器类 class ConcreteDecorator extends Decorator {public ConcreteDecorator(Component component) {super(component);}Overridepublic void operation() {super.operation();addedBehavior();}private void addedBehavior() {System.out.println(Added behavior by ConcreteDecorator);} }4.3 装饰器模式的优缺点 优点 可以动态地添加或删除对象的功能灵活性高。遵循开闭原则不需要修改现有代码就可以添加新功能。 缺点 可能会产生大量的具体装饰器类增加了系统的复杂性。客户端需要了解装饰器和被装饰对象的区别容易混淆。 4.4 装饰器模式在实际项目中的应用场景 装饰器模式常用于以下场景 Java I/O 类库中的 InputStream 和 OutputStream 就是使用了装饰器模式通过组合不同的装饰器类来实现不同的功能。GUI 应用程序中的窗口和控件通过装饰器模式可以动态地添加边框、滚动条等装饰。Web 开发中的过滤器、拦截器等功能也可以使用装饰器模式来实现。 5. 外观模式 (Facade Pattern) 外观模式是一种结构型设计模式提供了一个统一的接口用于访问子系统中的一群接口。它隐藏了子系统的复杂性使得客户端更加容易使用。 5.1 外观模式的概念和作用 外观模式的核心思想是提供一个简单的接口隐藏了系统的复杂性并将系统的子模块组织成一个更大的系统。这样客户端只需要与外观对象进行交互而不需要了解内部子系统的细节。 5.2 外观模式的结构和实现 在外观模式中有以下几个关键角色外观 (Facade)、子系统 (Subsystem)。 // 子系统类 class Subsystem1 {public void operation1() {System.out.println(Subsystem1 operation);} }class Subsystem2 {public void operation2() {System.out.println(Subsystem2 operation);} }class Subsystem3 {public void operation3() {System.out.println(Subsystem3 operation);} }// 外观类 class Facade {private Subsystem1 subsystem1;private Subsystem2 subsystem2;private Subsystem3 subsystem3;public Facade() {subsystem1 new Subsystem1();subsystem2 new Subsystem2();subsystem3 new Subsystem3();}public void operation() {subsystem1.operation1();subsystem2.operation2();subsystem3.operation3();} }5.3 外观模式的优缺点 优点 简化了客户端与子系统之间的交互降低了耦合度。客户端不需要了解子系统的内部结构减少了对子系统的直接依赖。提高了代码的灵活性和可维护性。 缺点 如果外观对象过于臃肿可能会变得难以维护和理解。 5.4 外观模式在实际项目中的应用场景 外观模式常用于以下场景 复杂系统的接口简化当一个系统包含多个子系统并且子系统之间存在复杂的依赖关系时可以使用外观模式来简化客户端与系统之间的交互。封装不稳定的接口当一个系统中的某些接口频繁变化但是客户端不希望因此受到影响时可以使用外观模式来封装这些不稳定的接口。 6. 享元模式 (Flyweight Pattern) 享元模式是一种结构型设计模式旨在通过共享对象来最小化内存使用和提高性能。它适用于大量相似对象的场景通过共享内部状态来减少内存占用。 6.1 享元模式的概念和作用 享元模式的核心思想是共享对象以减少内存占用和提高性能。在享元模式中对象分为内部状态和外部状态。内部状态是可以共享的而外部状态是不可共享的。通过共享内部状态可以减少系统中重复对象的数量从而节省内存。 6.2 享元模式的结构和实现 在享元模式中有以下几个关键角色享元工厂 (FlyweightFactory)、具体享元 (ConcreteFlyweight)、非共享具体享元 (UnsharedConcreteFlyweight)、享元接口 (Flyweight)。 // 享元接口 interface Flyweight {void operation(); }// 具体享元 class ConcreteFlyweight implements Flyweight {private String intrinsicState;public ConcreteFlyweight(String intrinsicState) {this.intrinsicState intrinsicState;}Overridepublic void operation() {System.out.println(ConcreteFlyweight: Intrinsic State intrinsicState);} }// 享元工厂 class FlyweightFactory {private MapString, Flyweight flyweights new HashMap();public Flyweight getFlyweight(String key) {if (!flyweights.containsKey(key)) {flyweights.put(key, new ConcreteFlyweight(key));}return flyweights.get(key);} }6.3 享元模式的优缺点 优点 减少内存占用通过共享内部状态可以减少系统中重复对象的数量节省内存空间。提高性能由于减少了对象数量可以提高系统的性能。 缺点 增加了系统复杂性引入了共享对象的管理机制增加了系统的复杂度。限制外部状态外部状态不可共享可能导致一些不便之处。 6.4 享元模式在实际项目中的应用场景 享元模式常用于以下场景 文字编辑器中的字符共享在文字编辑器中如果存在大量相同字符可以使用享元模式共享这些字符对象减少内存占用。棋盘游戏中的棋子管理在棋盘游戏中如果存在大量相同的棋子对象可以使用享元模式共享这些棋子对象提高性能。 7. 代理模式 (Proxy Pattern) 代理模式是一种结构型设计模式用于控制对其他对象的访问。 7.1 代理模式的概念和作用 代理模式充当了客户端和目标对象之间的中介控制对目标对象的访问。它通常用于以下情况 远程代理控制对远程对象的访问例如在网络上访问对象。虚拟代理延迟加载目标对象直到真正需要时才创建。保护代理控制对目标对象的访问权限验证客户端的请求是否合法。缓存代理为昂贵的操作结果提供缓存避免重复计算。 7.2 静态代理和动态代理的区别 静态代理在编译时已经确定代理类和目标类的关系代理类需要显式地实现与目标类相同的接口或继承相同的父类。缺点是每个代理类只能代理一个目标类不够灵活。动态代理在运行时动态生成代理类无需提前定义代理类。Java中的动态代理是通过 java.lang.reflect.Proxy 类实现的可以代理任意接口。相比静态代理更灵活但性能上略有损失。 7.3 代理模式的结构和实现 代理模式通常包含以下角色 抽象主题 (Subject)定义了代理类和真实主题类的公共接口客户端通过此接口访问真实主题。真实主题 (Real Subject)实现了抽象主题接口是代理模式中的实际业务逻辑。代理类 (Proxy)保存了一个真实主题对象的引用可以控制对真实主题的访问在必要时创建或删除真实主题对象。 示例代码 // 抽象主题 interface Subject {void request(); }// 真实主题 class RealSubject implements Subject {public void request() {System.out.println(RealSubject: Handling request.);} }// 代理类 class Proxy implements Subject {private RealSubject realSubject;public Proxy() {this.realSubject new RealSubject();}public void request() {System.out.println(Proxy: Pre-processing request.);realSubject.request();System.out.println(Proxy: Post-processing request.);} }7.4 代理模式的优缺点 优点 可以实现对目标对象的控制保护目标对象和客户端的透明性。可以实现远程代理、虚拟代理、保护代理等多种功能。 缺点 由于增加了代理类可能导致代码结构复杂化。静态代理需要提前定义代理类不够灵活动态代理性能稍逊于静态代理。 7.5 代理模式在实际项目中的应用场景 对外服务接口的访问控制与权限验证。远程接口的访问与数据传输。延迟加载大对象或耗时操作。

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

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

相关文章

网络公司网站建设服务dw软件免费安装

候选基因如何分析? 通常情况下关联分析会得到一大堆候选基因,总不可能每个都有用,因此需要对候选基因进行深一步分析,本篇笔记分享一下群体遗传学研究中GWAS候选位点与候选基因的筛选思路。主要的方式包括单基因关联分析、连锁程度…

2025宅基地纠纷律所权威推荐榜:专业调解与胜诉保障实力之选

宅基地纠纷作为农村土地争议的重要类型,近年来呈现持续增长态势。随着城乡一体化进程加速和土地资源价值提升,涉及宅基地使用权确认、边界划分、拆迁补偿等案件数量显著上升。这类纠纷往往牵涉农民切身利益,法律关系…

新化 网站开发比较有特色的网站

多模字符串匹配算法在这里指的是在一个字符串中寻找多个模式字符字串的问题。一般来说,给出一个长字符串和很多短模式字符串,如何最快最省的求出哪些模式字符串出现在长字符串中是我们所要思考的。该算法广泛应用于关键字过滤、入侵检测、病毒检测、分词…

一般做网站宽度是多少深圳的设计网站

LLM-based KG KnowLM OpenSPGKG-based RAG 基本原理 从query出发的语义解析 pre-LLM方法 思想:直接将问题解析为对应的逻辑表达式,然后到知识图谱中查询。 方法:通常包含逻辑表达式、语义解析算法、语义解析模型训练三部分。一般步骤是将问句…

做汽车配件招聘网站徐州 网站建设

提示:Grounding DINO、TAG2TEXT、RAM、RAM论文解读 文章目录 前言一、Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection1、摘要2、背景3、部分文献翻译4、贡献5、模型结构解读a.模型整体结构b.特征增强结构c.解码结构 6、实…

wordpress 博客网站是免费的么wordpress首页文件夹

面向对象编程思想 1、什么是面向过程 传统的面向过程的编程思想总结起来就八个字——自顶向下,逐步细化! → 将要实现的功能描述为一个从开始到结束按部就班的连续的“步骤” → 依次逐步完成这些步骤,如果某一个步骤的难度较大&#xff…

网站开发岗位实际情况做ae动图的网站

一.IOU 1.GIOU解决没有交集的框,IOU为0,其损失函数导数为0,无法优化的问题。 图1 GIOU,IOU,l2范数差异 a)可看出 l2值一样,IOU值是不一样的,说明L1,L2这些Loss用于回归任务时,不能等价于最后用于评测检测的IoU. b)可看出当框有包含关系,GIOU就退化为IOU 其是找…

docker build 时报错 Error fail to solve

docker build 时报错 Error fail to solve,排查处理。问题:填写镜像源: 在Docke Desktop的设置中,选择Docker Engine, 填写: {"builder": {"gc": {"defaultKeepStorage": "20…

web图像触发防盗链,无法显示

web图像触发防盗链,背景却无非正常显示,但是音乐播放器和别的功能模块却可以正常访问网络加载的解决方法。问题 网页在Windows直接运行的时候一切正常,但是通过docker以后,浏览器通过localhost:12345访问时,背景却…

成都市网站建设费用及企业站长统计芭乐官方网站下载

第二章 SpringFramework 五、Spring AOP 面向切面编程 6. Spring AOP 基于 XML 方式实现(了解) 6.1 准备工作 加入依赖和基于注解的 AOP 时一样。准备代码把测试基于注解功能时的 Java 类复制到新 module 中,去除所有注解。 6.2 配置 Sp…

.NET操作Excel:单元格范围 (Range) 的精确定位与常用管理 (下)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

TCP的学习 - 实践

TCP的学习 - 实践2025-10-01 10:32 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fami…

24届(华为OD)Java面经 - 教程

24届(华为OD)Java面经 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

dw内部网站链接怎么做网页设计与网站建设专业

本系列文章是学习深蓝学院-移动机器人运动规划课程第五章最优轨迹生成 过程中所记录的笔记,本系列文章共包含四篇文章,依次介绍了微分平坦特性、无约束BVP轨迹优化、无约束BIVP轨迹优、 带约束轨迹优化等内容 本系列文章链接如下: 最优轨迹生…

每天半小时,轻松学Docker第一篇:Debian 12 无痛安装与初体验 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

南宁网站制作费用it项目外包网

哈夫曼编码的设计与应用 问题需求分析 用哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长…

php网站访问很慢公司注册资金最低多少钱

Pass-14 (图片马,判断文件类型) 图片的格式在防护中通常是不会使用后缀进行判断的依据,文件头是文件开头的一段二进制码,不同类型的图片也就会有不同的二进制头。   JPEG (jpg),文件头:FF D…

2025上海骨灰盒哪里买优质厂家权威推荐榜:匠心工艺与品质服务之选

行业背景介绍 在殡葬文化中,骨灰盒承载着特殊的意义,它不仅是逝者最后的归宿,更是生者情感的寄托。随着社会的发展和人们观念的转变,对于骨灰盒的品质、工艺和文化内涵的要求也越来越高。上海作为国际化大都市,在…

实用指南:华为 HCIA-Datacom 备考:VRP 通用路由平台原理-实操

实用指南:华为 HCIA-Datacom 备考:VRP 通用路由平台原理-实操pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Co…