• 了解23种设计模式


    http://c.biancheng.net/view/1361.html //设计模式

    https://refactoringguru.cn/refactoring/course //图文 设计模式

    《Head First Design Patterns》、《大话设计模式》

    创建型模式(发现变化,封装变化;对象的实例化)
    简单工厂→工厂方法(初定义单一产品的抽象工厂)、抽象工厂(构成系列产品实例化,直接实例化指定工厂)
    单例 构造方法私有化,提供实例化的静态方法 (懒汉模式,懒加载,线程不安全,需要Syncronize、volatile 关键字 ,恶汉模式,static直接实例化对象,instance方法直接返回该对象 )
    原型模式 (实现cloneable 重写hashcode equals方法,深拷贝 相关命令、备忘录)
    建造者模式 (多数的特色建造者,唯一指定的指挥使/存在多种实例化方案,指挥建造者生产,由建造者返回最终对象)

    结构型模式(多组合,少继承)
    适配器 代码后的不同接口适配 适配器实现客户端调用接口,然后转接新接口的调用。
    桥接 代码前的设计 抽象为 遥控-设配 遥控器包含任一设备(可以多种设备组合,一键操作-配合抽象工厂、生成器),进行设备的接口调用。
    代理模式 初定义服务接口,代理类、原始类实现服务接口,代理类组合原始接口,由原对象构造生成具体代理,并在相同接口功能前后添加功能 代理可自行管理服务对象的生命周期,装饰需要客户端控制
    装饰模式 人穿衣 打印的装饰 初定义接口(_decorator), 定义简单数据读写器,定义抽象基础装饰类(构造方法入参为可装饰对象)返回对象奕为装饰者,具体装饰类,添加职能 DataSourceDecorator encoded = new CompressionDecorator(new EncryptionDecorator(new FileDataSource("out/OutputDemo.txt"))); 和责任链结构类似,递归组合,不同:责任链可以随时停止传递请求,装饰遵循原有接口扩展无法中断。和组合结构图类似,递归组合。装饰和组合可以从原型模式获益。

    外观模式  三层架构 隐藏子系统创建对象,抽象工厂可代替,外观和中介者职责类似,不同:外观为所有对象定义接口,不提供新功能,子系统中对象可相互交流;中介系统中组件沟通行为中心化,各组件值认识中介。 外观和代理都有一个复杂实例,外观提供新接口,代理与服务对象遵循一个接口。
    
    享元模式  大量生产部分相同特征的对象,抽取重复特征为单独的享元对象(享元工厂池/map来管理),树→树种  用于组合树实现叶节点;
    组合  树形结构 根,节点,叶 初定义接口(_component),抽象类(根), 节点继承根类存在(组合)多叶,或节点 叶继承根类为边界实现。 操作树→绽放树(用生成器构建复杂组合数;用迭代器遍历执行所有节点→叶;用访问者操作组合树;用享元实现叶节点) 
    

    行为型模式(面向接口编程)
    模板方法 合同生成抽象基类(_temp)(抽象方法:获取合同模板-项目中获取,服务器地址获取、获取合同数据-接口入参,数据库获取,第三方api获取 ;公共方法:基础数据生成,模板数据填充,记录文件表,配置式签章、签名) 模板方法基于继承抽象基类,扩展中子类改变不同算法(静态);策略基于组合算法 允许运行时切换行为
    策略模式 所有算法抽象策略类(_strategy) 上下文(context)配置策略
    状态模式 所有可能状态新建一个类(__state) 原始对象(document)组合状态类,委托状态类执行工作 可视为策略的扩展,不同:状态将部分工作委托给状态类,状态类相互之间有联系,允许自行改变不同场景下的状态;策略的不同算法相互独立

    责任链  初定义抽象基础类(_ware),上链方法由上一职责对象作为参数。 Middleware middleware = new ThrottingMiddleware(2);middleware.linkWith(new UserExsitsMiddleware(server)).linkWith(new RoleCheckMiddleware());结合组合模式使用,责任链管理者可用命令模式。
    命令模式  初定义命令基础类(command) ,命令类认识(组合)接收者对象 +备忘录实现“撤销”+原型保存历史记录 , 和策略相似,不同:命令将任一操作转为命令对象,操作参数作为成员变量;策略将某个执行过程不同方式抽象为算法。
    中介者  初定义中介者(_mediator),介绍所有组件认识(组合)具体中介 所有组件链接到中介者时即与观察者不同,所有组件皆为发布者,相互沟通时为分布式观察者
    观察者  发送者会遍历订阅列表并调用每个订阅者对象的通知方法
    责任链、命令、中介、观察者处理发送者和接收者之间的不同连接方式:
      责任链 动态请求一连串的潜在接收者,直到一个接收者处理请求; 
      命令 发送者创建命令,命令直接执行接收者; 
      中介 发送者告知中介,中介告知接收者;
      观察者动态地选择订阅请求或取消接收请求。
    
    迭代器模式  初定义迭代器接口(_interator),hasNext getNext reset  ;  初定义集合类接口(_collection)生成迭代器 +备忘录获取当前迭代器状态,和回滚;+访问者遍历复杂数据结构,对其中元素进行操作
    备忘录  发起者  管理者(command)拥有(组合)备忘录(memento) +命令实现“撤销”;+迭代器获取当前迭代器状态; 原型可作为备忘录得简化版
    访问者  访问者重载所有元素的访问方法, 确定的、有限的元素认识(组合)访问者,不同具体访问者(算法)和元素(对象)解耦  命令模式的加强,可对组合树进行操作,+迭代器遍历复杂数据结构。
    
    解释器模式
  • 相关阅读:
    Android 开发 深入理解Handler、Looper、Messagequeue 转载
    Android 开发 Handler的基本使用
    Java 学习 注解
    Android 开发 AlarmManager 定时器
    Android 开发 框架系列 百度语音合成
    Android 开发 框架系列 Google的ORM框架 Room
    Android 开发 VectorDrawable 矢量图 (三)矢量图动画
    Android 开发 VectorDrawable 矢量图 (二)了解矢量图属性与绘制
    Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图
    Android 开发 知晓各种id信息 获取线程ID、activityID、内核ID
  • 原文地址:https://www.cnblogs.com/caichaoxiang919/p/14630891.html
Copyright © 2020-2023  润新知