java设计模式
文章平均质量分 82
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
孟德爱吃香菜
这个世界能轻而易举毫不费劲做到的,只有贫穷和衰老,其他的都需要努力。
展开
-
Java 设计模式之桥接模式
桥接模式是一种结构设计模式,它的目标是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过将继承关系改为组合关系来实现解耦。在Java中,桥接模式的实现通常涉及两个层次结构:抽象类和具体实现类。抽象类表示抽象部分,而具体实现类表示实现部分。桥接模式通过把抽象类和具体实现类之间的联系放在一个桥接的接口中,使得它们可以独立地变化。在上述示例中,接口表示实现部分,具体实现类和实现了该接口。是抽象类,其中包含一个类型的成员变量,并定义了抽象方法。是的扩展类,它实现了方法并调用了。原创 2023-09-04 17:46:29 · 993 阅读 · 0 评论 -
【JAVA】建造者模式
建造者模式在Java中有许多实际应用场景。以下是一些常见的使用场景,对每个场景进行详细解释:创建复杂对象:建造者模式适用于创建具有多个属性或参数的复杂对象。例如,创建一个包含很多配置选项的电子商务订单对象,其中包括商品、数量、价格、收货地址、付款方式等信息。通过建造者模式,可以逐步构建订单对象,并将其各个属性设置为期望的值。对象构建的顺序不固定:当对象的构建顺序可能变化或某些属性是可选的时,建造者模式非常有用。原创 2023-08-25 16:54:16 · 946 阅读 · 0 评论 -
java设计模式之模板模式(结合示例)
在Java中,模板模式适用于以下场景:定义算法的骨架:当一个算法具有固定的执行步骤和顺序,但其中某些步骤需要根据具体情况进行实现时,可以使用模板模式。这样可以将算法的通用结构定义在抽象模板中,而将可变的部分延迟到具体子类中实现。共享公共行为:当多个类或对象之间具有相似的行为和操作,但又有一些差异时,可以使用模板模式来共享公共的行为。通过将公共行为提取到抽象模板中,避免了代码重复,并提供了一种灵活的方式来处理不同的差异。控制子类扩展:模板模式可以用于限制子类的扩展。原创 2023-07-26 13:49:29 · 498 阅读 · 1 评论 -
Java 动态代理和静态代理 详解(结合代码实列)
从输出结果可以看出,静态代理和动态代理都在原始对象的方法调用前后添加了额外的处理逻辑。但是,静态代理需要提前手动编写代理类,而动态代理则是在运行时生成代理对象。静态代理在编写和使用上更为直观,但是当需要代理多个类或接口时,需要为每个类或接口编写特定的代理类,有一定的重复工作。而动态代理可以更加灵活地决定代理哪些类或接口,并且减少了代码的重复性。总的来说,静态代理适用于代理对象较少且不需要动态决定代理关系的情况,而动态代理更适用于需要代理多个类或接口,并且希望在运行时动态决定代理关系的情况。原创 2023-07-18 10:11:20 · 202 阅读 · 3 评论 -
Java设计模式之动态代理
动态代理是一种常用的设计模式,它可以在运行时动态地创建代理对象,并将方法调用转发给实际对象。以下是一些常见的使用场景:AOP(面向切面编程):动态代理被广泛用于实现AOP。通过在方法执行前后插入额外的逻辑,例如日志记录、性能监控、事务管理等,可以将横切关注点从业务逻辑中分离出来。延迟加载(Lazy Loading):当需要在访问某个对象时才进行加载时,可以使用动态代理实现延迟加载的效果。通过代理对象拦截对方法或属性的访问,在真正需要时再进行加载,以提高系统性能和资源利用率。原创 2023-07-18 10:02:06 · 70 阅读 · 0 评论 -
单例模式的4种实现方式
单例模式是设计模式中最简单的设计模式之一单例模式简单来说就是保证一个类仅有一个实例,并提供一个访问单例对象的方法。饿汉方式建议使用第 1 种饿汉方式。只有在要明确实现 lazy loading 效果时,才会使用第 3 种静态内部类方式。如果涉及到反序列化创建对象时,可以尝试使用第 4 种枚举方式。如果有其他特殊的需求,可以考虑使用第 3 种双检锁方式。原创 2023-07-12 14:26:32 · 57 阅读 · 0 评论 -
注入多个实现类【JAVA】(设计模式之策略模式)项目实际场景【Spring boot】
}在上述示例中,Message是策略接口,PicMessage和TxtMessage是具体的策略类。是上下文类,在这里可以选择不同的策略来加密数据。这样,如果日后需要添加更多的消息类型,只需创建新的策略类即可,而不需要修改现有的代码。优点:1 可以自由切换对应处理逻辑2 避免了大量的if判断,代码更加优雅了3 扩展性更好,有新的消息类型只需增加对应的新消息类,需要修改外围逻辑缺点类增多,代码复杂度提升。原创 2023-06-29 14:58:47 · 579 阅读 · 1 评论