• 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);
    }
     
     
  • 相关阅读:
    Qt Quick实现的涂鸦程序
    Java并发学习之十九——线程同步工具之Phaser
    poj 1845(等比数列前n项和及高速幂)
    装饰模式(旧恋)
    cocos2d-x 3.1.1 学习笔记[3]Action 动作
    Nmap 源代码学习四 软件简单使用
    关于phpcmsv9更新缓存出现链接被重置的问题
    POJ 3159 Candies(SPFA+栈)差分约束
    Ubuntu 配置ISCSI服务
    iSCSI存储技术
  • 原文地址:https://www.cnblogs.com/chch213/p/16420797.html
Copyright © 2020-2023  润新知