Dict.CN 在线词典, 英语学习, 在线翻译 ------------- MyGitee 朱秋贵内科诊所 My腾云code

设计原则

1、原则
  1)、单一职责 只一个引起变化
  2)、开闭 修改关闭、扩展开放=>接口、抽象类
  3)、里氏代换 子类对象替父类对象
    开闭补充,抽象化实现
  4)、依赖倒置=>依赖抽象接口
  5)、接口隔离=>依赖Min接口
  6)、合成/聚合复用=>已有对象成为新对象一部分
    聚合:整体<=部分 iphone<=os
    合成:整体=部分 ALL=part
    少继承
  7)、迪米特=>低耦低赖 A类-->友元/中介-->B类

2、创建

  处理对象创建
  合适方式创建对象

  具体类封装、隐藏实例创建和结合方式

  对象创建型:处理对象创建;对象创建的一部分推迟到另一个对象
  类创建型:处理类创建;对象创建推迟到子类中

  2-1、简单工厂 SimplyFactory
    SimplyFactory=>typeA:productA type多复杂
  2-2、工厂方法 MethodFactory
    TypeAFactory=>Factory
    TypeAProduct=>Product....TypeZFactory复杂
  2-3、抽象工厂abstract
    TypeAFactory=>Factory
    TypeAProduct=>ProductA0....ProductAn A0..An复杂
  2-4、单列Singleton 扩展难 ==枚举
    饿汉synchronized第1次使用:空间大
    懒汉类加载:慢
    双锁volatile/synchronized:效率差
    内部类:多线程默认同步锁,同时延迟加载、线程安全
  2-5、原型clone
    对象A=new 类A, 对象B=对象A.clone 变化小
    浅:A.GetClass=B.GetClass;A<>B
    浅Cloneable:值
    深Serializable:引用


3、结构
  处理类/对象组合
  模块之间耦合

  3-1、适配器(对象)
    适配器=>适配者(不兼容接口对象)
    Client=>Target=>Adapter=>Adaptee
  3-2、桥接
    抽象部分与实现部分分离
    继承关系=>弱关联(组合或聚合) 降耦 少类数量

    桥接口=》扩展全部;抽象类=>桥接口,扩展全部继承

  3-3、组合
    整体/部分
    容器(叶子)、容器(容器)对象类层次=>递归树形 

  3-4、装饰者
    对象动态加/减职责
    类A0、A1=>implements=>接口A{方法a}
    abstract Decorator{方法b,Set 接口A} implements=>接口A{方法a}
    注:+方法b
    类DecoratorA0、A1=>extends=>Decorator

  3-5、外观
    统一接口=>访问子系统群接口

    类WatchTvSwtichFacade{
      类A0,A1.....AN
      方法a0{A0.a0......AN.a0}
      方法a1{A0.a1......AN.a1}
    }

  3-6、享元
    相同或者相似对象大粒重用共享、变化小

    抽象享元类A{参:外状态}
    具体享元类B、C extends A
    享元工厂F{B、C}{单例模式、简单工厂}

    

  3-7代理
    对象替身
    抽象对象:目标、代理对象共同接口
           目标对象代理对象使用一样
    目标对象:代理对象所代表的目标对象
    代理对象:代理对象内含目标对象,操作目标对象;
         代理、目标对象相同接口,替代目标对象

    客户端调用:传给目标前后执行操作

    抽象对象 AbstractObject{方法A}
    目标对象 RealObject extends AbstractObject{方法A}
    代理对象 ProxyObject extends AbstractObject{RealObjec、方法A}


4、行为
  类/对象=>交互、分配职责

  算法、对象间职责分配
  对象/类、之间通信方式
  控制流转移到对象间关系


  行为型类模式=>继承机制在类间分派行为
  行为型对象模式=>对象复合非继承

      

  4-1职责链
    请求者->处理者0{}.....->处理者n
    (处理者0.....n 动态增加/删除)

    请求者:类A
    abstract 处理B{ 处理{类A},后继者}
    处理B0 extends Leader B{}
    处理B1 extends Leader B{}
.    .......................
    处理Bn extends Leader B{}

  4-2命令
    请求对象
    发出、执行命令

    Receiver: 接收者
    Command:abstract 命令A{Receiver,abstract方法A0{}}
    ConcreteCommand extends Command{Receiver,Override 方法A0{})
    Invoker: 调用者{Command,方法A0{}}

     

  4-3解释器
    环境类Context
    abstract Expression{Context}
    PlusExpression extends Expression{}
    MinusExpression extends Expression{}

  4-4迭代器
    顺序聚合对象元素,不暴露内部

  4-5中介对象
    中介对象{交互对象A0.....交互对象An},不太多

    abstract 中介A{相互A}
    中介代理 extends 中介A{同事a...同事B}

    abstract 相互A
    同事a extends 相互A{中介A}
    同事b extends 相互A{中介A}
    ................................

    

  4-6备忘录
    恢复状态,回到某个历史的状态
    Originator: 原发器 创建备忘录
    Memento: 备忘录
    Caretaker: 负责人 保存备忘录

    Caretaker.Mement1=Originator.Memento1
    Originator.Memento2
    Originator.Memento1=(Caretaker.Memento1)

  4-7 观察者
    发布-订阅(广播)
    观察者n:1主题

    interface 观察者I
    观察者1 implements 观察者I

    interface 主题I
    主题1 implements 主题I{观察者1......观察者n}

  

   4-8状态
    内部状态<=>行为
    interface IState
    State0 implements IState
    ........................
    Staten implements IState
    Context{State0,......Staten}
  4-9策略
    算法族<>多条件
    interface ISort
    Sort0 implements ISort
    ........................
    Sortn implements ISort
    ArraySort{Sort0,......Sortn}

  4-10模板方法
    算法
    代码复用子类实现
    AbstractClass 模板方法{方法0...方法n,TemplateMethod{方法0...方法n}}
    ConcreteClassA extends 模板方法{}
.    ................................
    ConcreteClassZ extends 模板方法{}

  4-11访问者
  数据结构稳定
  操作变化
  interface I被访问{I访问{}}
  被访问a implements I被访问
  ..........................
  被访问n implements I被访问

 

 

  interface I访问
  访问1 implements I访问{被访问a......被访问n}
  访问2 implements I访问{被访问a......被访问n}
  ..........................
  访问n implements I访问{被访问a......被访问n}

 

 


https://www.cnblogs.com/chenssy/archive/2013/05/24/3096161.html
https://www.cnblogs.com/oukele/p/10105005.html

posted @ 2019-11-26 10:56  cn2023  阅读(166)  评论(0编辑  收藏  举报