- 博客(13)
- 收藏
- 关注
原创 java 设计模式_结构型_9外观模式
摘要: 外观模式通过引入一个统一的接口(外观类)来简化复杂子系统的调用,降低类间耦合度。以计算机启动为例,将CPU、内存、磁盘的启动逻辑封装在Computer类中,客户端只需与外观类交互,无需了解子系统细节。该模式优点包括:松散耦合(减少内部模块依赖)、易用性(简化客户端调用)、清晰的访问层次划分(隔离外部与内部功能)。示例中,若直接调用子类会导致强依赖,而外观类Computer集中管理关系,提升系统可维护性。 (字数:150)
2025-06-11 22:16:12
172
原创 java 设计模式_结构型_8代理模式——动态代理
摘要: 本文介绍了两种代理模式:动态代理和Cglib代理。动态代理通过JDK的Proxy类在内存中构建代理对象,无需实现接口,只需指定目标对象的接口类型和事件处理器。Cglib代理则针对未实现接口的目标对象,通过生成子类实现代理扩展功能,适用于final/static方法的场景。两种代理均通过工厂模式生成代理对象,并在方法调用前后添加事务处理逻辑。测试代码展示了代理对象的使用方式及其与目标对象的交互过程。
2025-06-11 22:11:40
649
原创 java 设计模式_结构型_8代理模式——静态代理
摘要: 代理模式通过代理对象间接访问目标对象,在不修改原代码的基础上扩展功能(如明星通过经纪人处理事务)。静态代理需代理类与目标类实现相同接口(如IUserDao),代理类(UserDaoProxy)增强目标类(UserDao)的方法调用(如添加事务处理)。优点是可扩展目标功能,缺点是接口变动时需同步修改代理类,且易产生过多代理类。动态代理可解决此问题。 (字数:150)
2025-06-11 22:06:10
228
原创 java 设计模式_结构型_7桥接模式
桥接模式是一种结构型设计模式,它将抽象与实现分离,使两者可以独立变化。通过聚合关系连接抽象类和实现类接口,避免了类爆炸问题。示例中以手机为例,将品牌(如vivo、小米)与样式(折叠式、直立式)解耦。抽象类Phone聚合Brand接口,不同样式手机继承Phone类并组合具体品牌,实现灵活扩展。这种方式解决了传统方案中新增品牌或样式需要修改多个类的缺点,符合单一职责原则,提高了代码的可维护性和扩展性。
2025-06-11 21:58:22
275
原创 java 设计模式_结构型_6适配器模式
摘要:适配器模式通过转换接口实现类间兼容,主要分为类适配器、对象适配器和接口适配器三种类型。模式包含三个角色:目标接口(Target)、被适配类(Adaptee)和适配器(Adapter)。示例展示了类适配器实现方式,通过继承Source类并实现Targetable接口,将Source的方法扩展到目标接口中,从而解决接口不匹配问题,最终测试输出验证了适配效果。该模式的核心价值在于实现程序结构的松耦合,扩展整体类结构。(144字)
2025-06-10 23:41:43
331
原创 java 设计模式_创建型_5克隆模式
本文介绍了原型模式的概念及其在Java中的实现。原型模式通过克隆现有对象来创建新对象,避免了重复构造的开销。文章以"漩涡鸣人分身术"为例,展示了浅拷贝和深拷贝的区别:浅拷贝仅复制基本数据类型,而深拷贝还需处理引用类型。为实现深拷贝,作者提出将基本类型和引用类型分开克隆的方法,并在Skill类中重写clone()方法。测试结果表明,深拷贝后各分身对象的技能属性具有不同内存地址,确保了对象间的独立性。这种模式适用于对象创建成本高的场景,能有效提高系统性能。
2025-06-09 22:18:13
953
原创 java 设计模式_创建型_4建造者模式
建造者模式是一种将复杂对象的构造与表示分离的设计模式,通过分步构建对象实现灵活创建。主要包含四个角色:产品(House)、抽象建造者(HouseBuilder)、具体建造者(HighBuilding)和指挥者(HouseDirector)。该模式适用于具有复杂创建过程的产品,如房屋建造、StringBuilder等场景。其优点是封装性好、扩展性强,缺点是产品组成部分必须相同且维护成本较高。相比工厂模式,建造者模式更关注对象组装过程而非创建过程。
2025-06-08 08:42:24
696
原创 java 设计模式_创建型_3抽象工厂模式
摘要:抽象工厂模式通过抽象工厂接口定义产品族的创建方法,包含多个相关产品的生产。当只有一个产品族时,该模式退化为工厂方法模式。示例展示了抽象工厂(AbstractFactory)与具体工厂(DefaultFactory)的实现,以及抽象产品(Vehicle,Food,Weapon)和具体产品(Car,Apple,Sword)的继承关系,最后通过测试类演示了产品创建和使用的完整流程。该模式适用于需要创建一系列相关或依赖对象的场景。
2025-06-08 08:33:55
229
原创 java 设计模式_创建型_2工厂模式
工厂方法模式是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给抽象工厂的子类去做。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。实例化对象,用工厂方法代替new操作。
2025-06-08 08:25:35
322
原创 java 设计模式_创建型_1单例模式 5种方式
单例模式是一种确保类只有一个实例的创建型设计模式,主要特点是通过私有构造方法和静态方法控制对象创建。常见实现方式包括饿汉式(类加载时创建对象,线程安全但耗内存)、懒汉式(首次调用时创建,需同步保证线程安全)、双重检测锁(优化同步效率但不推荐使用)、静态内部类(兼顾线程安全和延迟加载)以及枚举(天然单例,避免反射和反序列化漏洞)。单例模式优化了资源共享,但需注意反射和反序列化可能破坏单例,可通过异常控制和readResolve()方法防范。根据资源占用和加载需求,枚举适合简单场景,静态内部类适合资源较大的延迟
2025-06-07 15:39:12
490
原创 java实现XML解析(SAX、PULL)
SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。pull解析器的方式,和sax解析一样,也是采用事件驱动进行解析的,在eclipse程序中没有内置的支持pull解析的jar包,所以我们需要添加第三方的jar包来支持pull。3.2 案例:解析指定文件(标签无属性),并将文件中的信息存放到list中。案例:解析XML文件(不带属性)
2025-06-07 10:09:50
1042
原创 java实现网络聊天室
-----客户端A给我发什么,我就给其他的客户端(B,C)发送“A说:××××”------新增一个集合来存储我们客户端的信息(记录哪些客户端连接着服务端)------把通用对象的创建移到构造方法里面,run就更加可以专注自己的业务。------接收客户端注册的用户名,并且回馈“欢迎×××进入聊天室”------方式一:服务端收到客户端连接请求后,将这个信息发给客户端。------后续客户端给我发什么,我就给他回什么。(1),创建一个服务端程序,开启监听端口。------方式二:这个信息在客户端实现。
2025-06-04 23:03:38
426
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人