摘要: 单一职责原则(Single Responsibility Principle,SRP) 定义:一个类应该只有一个引起它变化的原因。也就是说,一个类只负责一项职责。 示例与解释:例如,有一个UserService类,它的职责如果包括用户的注册、登录以及用户信息的修改。这就不符合单一职责原则,因为用户注 阅读全文
posted @ 2024-12-17 22:30 Eular 阅读(75) 评论(0) 推荐(0)
摘要: 实际就是缓冲思想,池化思想。 比如线程池、数据库连接池、还有JDK里面也有。 Integer里面toString使用享元数据 final static char[] digits = { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9 阅读全文
posted @ 2024-12-17 22:24 Eular 阅读(9) 评论(0) 推荐(0)
摘要: 有时候面对复杂的场景,就想着怎么解耦、怎么复用、怎么扩展,然后无意间各种设计模式就拧巴在一起了。 责任链和观察者的区别 责任链强调的是顺序,前后可能有逻辑关系。而观察者体现的是的独立性。虽然都有传递消息通知执行的功能,但是侧重点不同。 两个结合使用 我的这个业务场景正好符合混合使用。因为一个消息发布 阅读全文
posted @ 2024-12-17 22:15 Eular 阅读(33) 评论(0) 推荐(0)
摘要: 这个模式核心思想是将基本的数据对象和对应的操作相互分离。数据对象就只是数据对象,如果想要扩展操作,就扩展对应的visitor。 这种模式下的两次分派 第一次分派,是将对数据对象本身进行分派,可以有不同的实现。 第二次分派,是visitor接收不同的数据对象。 结果就是数据对象接受了visitor,然 阅读全文
posted @ 2024-12-17 21:50 Eular 阅读(58) 评论(0) 推荐(0)
摘要: 装饰器强调的是动态功能增强,而这种增强是比单继承更加的灵活的方式,可以动态的给基类扩展不同的功能。 继承实现增强有不同结构 如果是按照最小原则,是这样的⬇︎⬇︎⬇︎ 如果不想那么多类文件,是这样的⬇︎⬇︎⬇︎ 虽然这样都能实现让子类拥有base/A/B三个操作,但如果现在只需要base/B操作怎么办 阅读全文
posted @ 2024-12-17 21:08 Eular 阅读(68) 评论(0) 推荐(0)
摘要: 双重检查是我用的最多的一种。因为它是一种线程安全的写法,而这种写法可以应用到各种场景中。比如:涉及到多线程共享的数据,在更新时候的使用。 比如这种: 其他的方式也有,比如内部类的实现方式。 点击查看代码 public class SingletonEagerInnerClass { private 阅读全文
posted @ 2024-12-17 19:00 Eular 阅读(11) 评论(0) 推荐(0)
摘要: 模版符合开闭原则,到处用于钩子方法。有的钩子方法不会改变行为,有的钩子会改变运行轨迹。框架中到处使用。 Channel中定义了需要的操作,AbstractChannel实现了核心功能,然后不同的Channel实现只需要告知具体channel的描述信息即可。 Channel package com.x 阅读全文
posted @ 2024-12-17 18:39 Eular 阅读(49) 评论(0) 推荐(0)
摘要: 不同类型的消息处理 这里抽象层用的是接口 MessageProcess /** * 消息处理 * * @author haiyang */ public interface MessageProcess<K,V> { /** * 处理消息 * * @param messageInfo 消息相关信息 阅读全文
posted @ 2024-12-17 17:30 Eular 阅读(57) 评论(0) 推荐(0)