核心思想:一个类只负责一件事 优点:低复杂度、可维护、低变更风险 // 系统数据迁移服务类,只保留和数据迁移相关的类 public class DataMigration{ // 方法1:查询待迁移的数据 public T getData(); // 方法2:迁移总流程 public T migrationTask(); // 方法3:查询用户信息 >> 和迁移无关的 public T getUser(); }
核心思想:对修改关闭,对拓展开放 // 用户类 public class User { // 属性只读 private String name; // 提供公共接口 public String getName(); }
核心思想:模块间通过抽象接口隔离分开,而不是通过具体的类强耦合起来;通用性的接口, 不要有个性化的,设计接口精简单一 // 公共服务 public class CommonService { // 导出 public T export(); // 查询 public T queryT(); // 货币市场交易数据 个性话的方法 public T getMMDeal(); }
核心思想:父类可以被子类无缝替换,且原有功能不受任何影响,不要破坏继承关系 优点:少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); }
核心思想:最小知识原则,一个对象应当对其他对象有尽可能少的了解 // 导出服务 public class CommonService { // 方法1 导出债券交易数据 直接导出数据无需关注具体债券信息 public T export(Bond bond); }
核心思想:上层模块不应该依赖底层模块,它们都应该该依赖于抽象,面向接口编程 // 债券交易数据 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); }