自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 java 设计模式_行为型_21责任链模式

责任链模式是一种行为型设计模式,它将多个处理对象连成一条链,请求沿链传递直至被处理。每个处理器决定是否处理请求或传递给下一对象。该模式实现了请求发送者与处理者的解耦,支持动态调整处理链。优点包括灵活扩展、降低耦合,但过长的责任链可能影响效率,循环引用会导致死循环。示例展示了通过设置处理链,请求从h1依次传递到h3、h2的过程。该模式适用于多级审批、过滤器等场景。

2025-06-15 09:17:50 234

原创 java 设计模式_行为型_20中介者模式

摘要: 中介者模式是一种行为型设计模式,通过引入中介对象封装多个对象间的交互,降低对象间的直接耦合。它适用于系统中对象引用关系复杂、难以维护的情况。该模式包含四种角色:抽象中介者定义通信接口,具体中介者实现接口并管理对象实例,抽象同事保存中介者引用,具体同事通过中介者与其他对象通信。代码示例展示了两个具体同事类通过中介者相互发送消息的过程,实现了对象间的松耦合交互。这种模式简化了对象间的网状结构,提高了系统的可维护性和灵活性。

2025-06-15 09:15:42 465

原创 java 设计模式_行为型_19命令模式

命令模式通过将请求封装为对象,实现了请求调用者和执行者的解耦。本文以GUI界面设置为例,演示了如何实现命令模式:1)定义Font和BackGround接收者类;2)创建Command接口及其具体实现类(如字体大小、背景颜色命令);3)使用Invoker类管理执行命令。该模式优点在于可以集中管理多个命令,支持宏命令组合操作,并适用于遥控器、日志等场景。通过封装请求为对象,使系统更灵活且易于扩展。

2025-06-15 09:08:44 347

原创 java 设计模式_行为型_18解释器模式

摘要: 解释器模式用于评估特定语法表达式,属于行为型设计模式,适用于SQL解析、正则表达式处理等场景。该模式通过实现表达式接口来解释上下文,如计算器公式解析。示例展示了Java实现:定义Expression接口,终结符表达式Num处理数字,非终结符表达式Add、Sub等处理运算,最后通过组合表达式计算(2+3)-(4/2)的结果。该模式适合小众但特定的语言解析需求,UML图清晰展现了其结构关系。 (字数:150)

2025-06-15 09:00:11 210

原创 java 设计模式_行为型_17观察者模式

摘要: 观察者模式实现一对多的依赖关系,当主题对象状态变化时自动通知所有观察者。以学生班级为例:A类学生(玩游戏、看电视)作为观察者,B类学生(放哨者)作为主题对象。当老师到来时,放哨者通知所有A类学生,触发各自响应(如关闭电视)。代码结构包含抽象观察者(Observer)、具体观察者(GameObserver/TVObserver)、抽象主题(Subject)及具体主题(ConcreteSubject)。通过维护观察者列表和状态更新机制,实现低耦合的通知与响应。测试案例展示了多观察者协同工作的效果。

2025-06-14 17:29:33 463

原创 java 设计模式_行为型_16访问者模式

访问者模式是一种行为设计模式,允许在不改变数据结构的前提下定义新操作。该模式包含五个角色:抽象访问者定义访问接口,具体访问者实现操作,抽象元素提供accept方法,具体元素实现accept并调用访问者方法,对象结构管理元素集合。示例代码展示了游戏英雄类通过访问者模式实现不同访问者触发不同技能操作,其中访问者接口定义了对不同英雄的访问方法,具体英雄类通过accept方法将自身传递给访问者,最终通过对象结构统一处理访问请求。该模式实现了算法与对象结构的分离,便于新增操作。

2025-06-14 17:26:13 391

原创 java 设计模式_行为型_15迭代器模式

摘要: 迭代器模式提供了一种统一遍历集合元素的方式,隐藏内部实现细节。该模式包含四个核心角色:抽象容器(Aggregate)、抽象迭代器(Iterator)、具体容器(ConcreteAggregate)和具体迭代器(ConcreteIterator)。通过示例代码展示了如何实现一个基于ArrayList的迭代器,包括创建容器接口、迭代器接口、具体容器类和具体迭代器类。测试代码演示了如何使用迭代器统一遍历不同类型的集合元素,体现了该模式"提供遍历方法而不暴露内部结构"的核心思想。

2025-06-14 17:21:03 292

原创 java 设计模式_行为型_14策略模式

策略模式是一种行为设计模式,它将算法封装成独立类,使它们可以互相替换。该模式通过定义策略接口和具体实现类,允许客户端根据不同场景选择合适算法。文中以交通信号灯为例,展示了红灯停、黄灯等和绿灯行三种策略的实现方式。优点包括算法自由切换、避免条件判断和良好扩展性,但会增加策略类数量。适用于需要多种算法处理同一问题或需要隐藏算法细节的场景。代码示例包含策略接口、具体策略类、上下文对象及测试类,演示了模式的具体应用。

2025-06-14 17:12:33 593

原创 java 设计模式_行为型_13备忘录模式

备忘录模式是一种行为型设计模式,在不破坏封装性的前提下保存对象状态,以便后续恢复。该模式包含三个核心角色:发起人(保存和恢复状态)、备忘录(存储状态)、管理者(维护备忘录)。通过示例代码展示了游戏关卡状态的保存和回退功能,其中发起人创建状态快照存入备忘录,管理者负责存储这些快照,需要时可将状态恢复到之前的任意保存点。这种模式适用于需要撤销/重做、状态回退等场景,为系统提供灵活的"后悔机制"。

2025-06-12 23:36:22 321

原创 java 设计模式_结构型_12组合模式

摘要: 组合模式通过树形结构组织对象,使单个对象(叶子节点)和组合对象(容器节点)具有一致性操作。该模式包含抽象构件(Component)、叶子节点(Leaf)和非叶子节点(Composite),适用于树形结构数据处理(如文件系统、组织架构)。案例以服装店为例,实现了门店、专卖店和服装类别的层级管理,通过递归调用统一处理不同层次对象。优势在于扩展性强、符合开闭原则,但差异大的对象不适用。典型应用包括资源管理器、XML解析和JUnit测试框架。

2025-06-12 23:24:07 460

原创 java 设计模式_结构型_11装饰者模式

装饰者模式是一种动态扩展对象功能的设计模式,通过组合而非继承的方式实现功能增强。该模式包含抽象构件、具体构件、抽象装饰类和具体装饰类四个角色,允许在运行时灵活添加新功能而不影响原有对象。文中以QQ会员服务为例,展示了如何通过VipDecorator和SVipDecorator在不修改User类的情况下扩展用户特权功能。装饰模式在Java IO流、Swing组件等领域有广泛应用,其优点是灵活性高、耦合度低,但可能产生大量小对象影响性能。相比继承,装饰模式更适合动态、多层次的功能扩展需求。

2025-06-12 23:21:16 759

原创 java 设计模式_结构型_10享元模式

这里面其实是使用了单例模式的。它会维护一个对象列表,当我们想要获取享元类时,如果请求的享元类已经被创建,则直接返回已有的享元类:若没有,则创建一个新的享元对象,并将它加入到维护队列中。享元模式,单从概念来讲估计很多人不是很理解,但是从Integer、String已经生活中的场景结合起来理解,就能轻松理解享元模式,享元模式的实现基本上都伴随着一个集合用来存这些对象。每个中国公民都有一张身份证,并且这张身份证信息在公安系统中是共享的,全国各公安局派出所都会共享你的身份证信息(共享的是个人身份信息)。

2025-06-12 23:17:15 493

原创 java 设计模式_结构型_9外观模式

摘要: 外观模式通过引入一个统一的接口(外观类)来简化复杂子系统的调用,降低类间耦合度。以计算机启动为例,将CPU、内存、磁盘的启动逻辑封装在Computer类中,客户端只需与外观类交互,无需了解子系统细节。该模式优点包括:松散耦合(减少内部模块依赖)、易用性(简化客户端调用)、清晰的访问层次划分(隔离外部与内部功能)。示例中,若直接调用子类会导致强依赖,而外观类Computer集中管理关系,提升系统可维护性。 (字数:150)

2025-06-11 22:16:12 241

原创 java 设计模式_结构型_8代理模式——动态代理

摘要: 本文介绍了两种代理模式:动态代理和Cglib代理。动态代理通过JDK的Proxy类在内存中构建代理对象,无需实现接口,只需指定目标对象的接口类型和事件处理器。Cglib代理则针对未实现接口的目标对象,通过生成子类实现代理扩展功能,适用于final/static方法的场景。两种代理均通过工厂模式生成代理对象,并在方法调用前后添加事务处理逻辑。测试代码展示了代理对象的使用方式及其与目标对象的交互过程。

2025-06-11 22:11:40 898

原创 java 设计模式_结构型_8代理模式——静态代理

摘要: 代理模式通过代理对象间接访问目标对象,在不修改原代码的基础上扩展功能(如明星通过经纪人处理事务)。静态代理需代理类与目标类实现相同接口(如IUserDao),代理类(UserDaoProxy)增强目标类(UserDao)的方法调用(如添加事务处理)。优点是可扩展目标功能,缺点是接口变动时需同步修改代理类,且易产生过多代理类。动态代理可解决此问题。 (字数:150)

2025-06-11 22:06:10 307

原创 java 设计模式_结构型_7桥接模式

桥接模式是一种结构型设计模式,它将抽象与实现分离,使两者可以独立变化。通过聚合关系连接抽象类和实现类接口,避免了类爆炸问题。示例中以手机为例,将品牌(如vivo、小米)与样式(折叠式、直立式)解耦。抽象类Phone聚合Brand接口,不同样式手机继承Phone类并组合具体品牌,实现灵活扩展。这种方式解决了传统方案中新增品牌或样式需要修改多个类的缺点,符合单一职责原则,提高了代码的可维护性和扩展性。

2025-06-11 21:58:22 338

原创 java 设计模式_结构型_6适配器模式

摘要:适配器模式通过转换接口实现类间兼容,主要分为类适配器、对象适配器和接口适配器三种类型。模式包含三个角色:目标接口(Target)、被适配类(Adaptee)和适配器(Adapter)。示例展示了类适配器实现方式,通过继承Source类并实现Targetable接口,将Source的方法扩展到目标接口中,从而解决接口不匹配问题,最终测试输出验证了适配效果。该模式的核心价值在于实现程序结构的松耦合,扩展整体类结构。(144字)

2025-06-10 23:41:43 402

原创 java 设计模式_创建型_5克隆模式

本文介绍了原型模式的概念及其在Java中的实现。原型模式通过克隆现有对象来创建新对象,避免了重复构造的开销。文章以"漩涡鸣人分身术"为例,展示了浅拷贝和深拷贝的区别:浅拷贝仅复制基本数据类型,而深拷贝还需处理引用类型。为实现深拷贝,作者提出将基本类型和引用类型分开克隆的方法,并在Skill类中重写clone()方法。测试结果表明,深拷贝后各分身对象的技能属性具有不同内存地址,确保了对象间的独立性。这种模式适用于对象创建成本高的场景,能有效提高系统性能。

2025-06-09 22:18:13 959

原创 java 静态内部类实现建造者模式

【代码】java 静态内部类实现建造者模式。

2025-06-08 10:30:40 93

原创 java 设计模式_创建型_4建造者模式

建造者模式是一种将复杂对象的构造与表示分离的设计模式,通过分步构建对象实现灵活创建。主要包含四个角色:产品(House)、抽象建造者(HouseBuilder)、具体建造者(HighBuilding)和指挥者(HouseDirector)。该模式适用于具有复杂创建过程的产品,如房屋建造、StringBuilder等场景。其优点是封装性好、扩展性强,缺点是产品组成部分必须相同且维护成本较高。相比工厂模式,建造者模式更关注对象组装过程而非创建过程。

2025-06-08 08:42:24 700

原创 java 设计模式_创建型_3抽象工厂模式

摘要:抽象工厂模式通过抽象工厂接口定义产品族的创建方法,包含多个相关产品的生产。当只有一个产品族时,该模式退化为工厂方法模式。示例展示了抽象工厂(AbstractFactory)与具体工厂(DefaultFactory)的实现,以及抽象产品(Vehicle,Food,Weapon)和具体产品(Car,Apple,Sword)的继承关系,最后通过测试类演示了产品创建和使用的完整流程。该模式适用于需要创建一系列相关或依赖对象的场景。

2025-06-08 08:33:55 231

原创 java 设计模式_创建型_2工厂模式

工厂方法模式是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给抽象工厂的子类去做。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。实例化对象,用工厂方法代替new操作。

2025-06-08 08:25:35 323

原创 java 设计模式_创建型_1单例模式 5种方式

单例模式是一种确保类只有一个实例的创建型设计模式,主要特点是通过私有构造方法和静态方法控制对象创建。常见实现方式包括饿汉式(类加载时创建对象,线程安全但耗内存)、懒汉式(首次调用时创建,需同步保证线程安全)、双重检测锁(优化同步效率但不推荐使用)、静态内部类(兼顾线程安全和延迟加载)以及枚举(天然单例,避免反射和反序列化漏洞)。单例模式优化了资源共享,但需注意反射和反序列化可能破坏单例,可通过异常控制和readResolve()方法防范。根据资源占用和加载需求,枚举适合简单场景,静态内部类适合资源较大的延迟

2025-06-07 15:39:12 496

原创 java实现XML解析(SAX、PULL)

SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。pull解析器的方式,和sax解析一样,也是采用事件驱动进行解析的,在eclipse程序中没有内置的支持pull解析的jar包,所以我们需要添加第三方的jar包来支持pull。3.2 案例:解析指定文件(标签无属性),并将文件中的信息存放到list中。案例:解析XML文件(不带属性)

2025-06-07 10:09:50 1051

原创 java实现网络聊天室

-----客户端A给我发什么,我就给其他的客户端(B,C)发送“A说:××××”------新增一个集合来存储我们客户端的信息(记录哪些客户端连接着服务端)------把通用对象的创建移到构造方法里面,run就更加可以专注自己的业务。------接收客户端注册的用户名,并且回馈“欢迎×××进入聊天室”------方式一:服务端收到客户端连接请求后,将这个信息发给客户端。------后续客户端给我发什么,我就给他回什么。(1),创建一个服务端程序,开启监听端口。------方式二:这个信息在客户端实现。

2025-06-04 23:03:38 430 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除