zoukankan      html  css  js  c++  java
  • 设计模式

    一、设计原则

    • 单一职责:一个类负责一类功能
    • 开闭原则:对扩展开放,对修改封闭
    • 里氏代换原则:所有使用父类的地方,都可以使用子类替换
    • 依赖倒转:具体依赖抽象。两个关联的东西,都应该在外层有一个抽象封装,这样只需要修改内部实现,不影响关联。针对接口编程
    • 接口隔离原则:一个接口负责一个功能
    • 合成复用原则:少用继承,多用组合或聚合。继承破坏父类的封装、父类子类的耦合高
    • 迪米特法则:最少知道法则,一个类只和直接关联类(成员变量,方法入参出参)打交道、减少一个类的公有方法隐藏自己

    二、分类

    • 创建型:工厂、抽象工厂、单例、原型、创建者
    • 接口型:装饰者、代理、外观
    • 行为型:模板方法、策略

    三、举例

    1. 单例
      1. 实现:恶汉、懒汉+双重检查+volitail、静态内部类(内部类的延迟加载)、枚举
      2. 破坏:反射调构造方法、序列化(改写readResolv返回原实例)、克隆(改写clone方法返回原实例)
    2. 原型
      1. 实现:浅拷贝(实现Cloneable接口)、深拷贝(类和属性需要实现Serializable接口)
    3. 模板
      1. 应用:父类定义一个方法的具体流程,第一步第二步第三步、子类自定义实现。订单列表:XX公司员工/普通用户
    4. 构建者
      1. 应用:@Builder,当属性很多时,不需要写很多构造器,很方便的时候set方法
    5. 策略
      1. 应用:将父类/接口定义方法入参,传递入参时使用不同实现
    6. 装饰器
      1. 实现:装饰器类实现目标接口,内部持有原接口对象,在改写的方法里添加自己的逻辑,再调用原实现。
    7. 简单工厂
      1. 实现:在工厂内部,根据入参使用if else返回不同实例。一个简单工厂生成多个实例
    8. 工厂模式
      1. 实现:一个工厂生成一种实例
    9. 抽象工厂
      1. 实现:一个工厂生成一组关联实例,并在内部完成组装
      2. 应用:比如车,汽车抽象工厂(方向盘,沙发,轮子),自行车抽象工厂(座椅,轮子)
    10. 代理
      1. 应用:springAOP
    11. 外观:
      1. 应用:订单列表接口查询多个核心系统
    人生就像蒲公英,看似自由,其实身不由己。
  • 相关阅读:
    linux查看CPU性能及工作状态的指令mpstat,vmstat,iostat,sar,top
    Linux vmstat命令实战详解
    dstat 性能监测工具
    sysstat 工具
    Linux命令详解----iostat
    Linux CPU实时监控mpstat命令详解
    Linux Top 命令解析 比较详细
    Linux统计/监控工具SAR详细介绍
    ubuntu 添加用户到已存在的组
    Ubuntu 14.04 使用速度极快的Genymotion 取代蜗牛速度的原生AVD模拟器
  • 原文地址:https://www.cnblogs.com/walker993/p/14913413.html
Copyright © 2011-2022 走看看