摘要:
类图 前面代码看出来 最终返回的是LoggerContext这个类实现了LogFactory 成员变量 //表示根logger final Logger root = new Logger("ROOT", (Logger)null, this); //标识创建了多少个logger private i 阅读全文
摘要:
为什么要看logback源码 项目里面log.info log.error 在请求量大的时候某个请求出问题,很难定位到相关日志,所以针对前端统一返回一个id后端日志自动拼接上这个id slf4j的理解 我的理解slf4j是一个抽象的日志接口,并没有具体实现。我们可以通过slf4j集成各种日志框架lo 阅读全文
摘要:
什么是迪米特原则 能够指导我们实现“高内聚、松耦合”的代码 迪米特原则的定义是: 只与你的直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to strangers)。其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接 阅读全文
摘要:
什么是DRY Don’t Repeat Yourself 不要定义重复代码 实现逻辑重复 public class UserAuthenticator { public void authenticate(String username, String password) { if (!isVali 阅读全文
摘要:
什么是KSS原则 “Simple and Stupid” 尽量保证简单 代码行数越少就越“简单”吗? 需求 一个合法的 IP 地址由四个数字组成,并且通过“.”来进行分割。每组数字的取值范围是 0~255。第一组数字比较特殊,不允许为 0。对比这三段代码,你觉得哪一段代码最符合 KISS 原则呢?如 阅读全文
摘要:
什么是控制反转(IOC) public class UserServiceTest { public static boolean doTest() { // ... } public static void main(String[] args) {//这部分逻辑可以放到框架中 if (doTes 阅读全文
摘要:
客户端不应该强迫依赖它不需要的接口。其中的“客户端”,可以理解为接口的调用者或者使用者。 看起来和单一职责很像 单一职责是约束类和模块 接口隔离原则是约束接口或函数 三种表现形式 "接口"理解为一组API 微服务接口比如dubbo Service 反例 public interface UserSe 阅读全文
摘要:
什么是里式替换原则 子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。 正例 public c 阅读全文
摘要:
什么是开闭原则 对修改封闭,对扩展开放 当我们增加一个功能的时候,应该在已有功能上扩展,而不是在已有功能上进行修改(修改模块、类、方法) 违反开闭原则的例子 下面有个监控的例子 当发生错误或者qps到达某个阀值的时候发出预警 public class Alert { /** * 存储告警规则 可以自 阅读全文
摘要:
什么是单一职责 一种理解是:把模块看作比类更加抽象的概念,类也可以看作模块。另一种理解是:把模块看作比类更加粗粒度的代码块,模块中包含多个类,多个类组成一个模块。 一个类只负责完成一个职责或者功能。也就是说,不要设计大而全的类,要设计粒度小、功能单一的类。换个角度来讲就是,一个类包含了两个或者两个以 阅读全文