JAVA GoF设计模式-6大设计原则

6大设计原则

1、单一职责原则

核心思想:一个类只负责一件事
优点:低复杂度、可维护、低变更风险
// 系统数据迁移服务类,只保留和数据迁移相关的类
public class DataMigration{
// 方法1:查询待迁移的数据 
public T getData();
// 方法2:迁移总流程
public T migrationTask();
// 方法3:查询用户信息 >> 和迁移无关的
public T getUser(); 
}

 

2、开闭原则原则

核心思想:对修改关闭,对拓展开放
// 用户类
public class User {
// 属性只读
private String name;
 
// 提供公共接口
public String getName();
 
}

 

3、接口隔离原则

核心思想:模块间通过抽象接口隔离分开,而不是通过具体的类强耦合起来;通用性的接口, 不要有个性化的,设计接口精简单一
// 公共服务
public class CommonService {
// 导出
public T export();
// 查询
public T queryT();
// 货币市场交易数据 个性话的方法
public T getMMDeal();
}

 

4、里氏替换原则(LSP)

核心思想:父类可以被子类无缝替换,且原有功能不受任何影响,不要破坏继承关系
优点:少bug、增强可读性
// 服务基础类
public class BaseService {
// 方法1:获取登录用户信息
public User getCurrentUser(String uuid);
}
 
// 系统数据迁移服务类,只保留和数据迁移相关的类
public class DataMigration extends BaseService {
// 方法1:查询当前登录用户的待迁移的数据
// 直接继承父类的,不要改动父类的具体方法
User user = getCurrentUser(uuid); 
public T getData(User user);
}

 

5、迪米特原则

核心思想:最小知识原则,一个对象应当对其他对象有尽可能少的了解
// 导出服务
public class CommonService {
// 方法1 导出债券交易数据 直接导出数据无需关注具体债券信息
public T export(Bond bond);
}

 

6、依赖倒置原则(DIP)

核心思想:上层模块不应该依赖底层模块,它们都应该该依赖于抽象,面向接口编程
// 债券交易数据
public class Bond {
// 债券编号
// 债券名称
// 债券发行机构
}
// 货币市场交易数据
public class MoneyMarket {
// 头寸编号
// 交易行为
// 交易动作
}
// 导出服务
public class CommonService {
// 方法1 导出债券交易数据
public T export(Bond bond);
// 方法2 导出货币市场交易数据
public T export(MoneyMarket mm);
// 这样每次变动都要修改公共类,可能会动到原有的代码
public T export(Deal deal);
}

 

 
 
posted @ 2022-06-28 19:29  chch213  阅读(55)  评论(0编辑  收藏  举报