摘要:
类比于二维平面的坐标,或多维坐标。"桥"将多个维度的接口(或实现)连接起来,构成新的产品。 一、什么是桥接模式? 为什么关注的是多维的? 因为当某个类具有两个或两个以上的维度变化,若仅用继承将无法实现这种需要,或会使得设计变得相当臃肿。 这个多维度变化怎... 阅读全文
摘要:
大多情况下,都不需要使用访问者模式,但是一旦需要使用它时,那就真的需要使用了。 一、什么出手? 既然一出手这么牛逼,那到底啥时候才会出手呢? 简单的说,就是当系统中存在一个结构比较稳定的对象,但是它的访问者会经常改变,且不同的访问者对其访问的操作也不同... 阅读全文
摘要:
在享元模式中通常会出现工厂模式,需要创建一个享元工厂来负责维护一个享元池(Flyweight Pool)用于存储具有相同内部状态的享元对象。主要用于减少创建对象的数量,以减少内存占用和提高性能。 一、什么是享元模式? 在开发中会出现重复使用同一个对象的情... 阅读全文
摘要:
命令模式的核心在于引入了命令类,通过命令类来降低发送者和接收者的耦合度,请求发送者只需指定一个命令对象,再通过命令对象来调用请求接收者的处理方法。 一、什么是命令模式? 命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送... 阅读全文
摘要:
一、匹配以某字符开头某一行 (?:^|\n)字符位置.* 比如(?:^|\n)prompt.*表示以prompt开头的这一行字符串 二、 匹配以a字符串开头,b字符串结尾的字符,中间不管 a字符串位置(.+?)b字符串位置 ,比如 匹配... 阅读全文
摘要:
迭代器模式提供一种方法顺序访问一个集合对象中的各个元素,而又不暴露其内部的表示。 一、为什么需要迭代器? 迭代器模式算是一个比较古老的设计模式,其源于对容器的访问,比如 Java 的 List 、Map 、数组等。 对容器对象的访问必然会设计遍历算法,可... 阅读全文
摘要:
组合模式可以在需要针对“树形结构”进行操作的应用中使用,例如扫描文件夹、渲染网站导航结构等等。 一、什么是组合模式? 组合模式将一组相似的对象看做一个对象处理,并根据一个树状结构来组合对象,提供一个统一的方法去访问相应的对象,使得用户对单个对象和组合对象... 阅读全文
摘要:
备忘录模式在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 一、备忘录模式 我们编辑word文档、写这篇博客的时候,经常用到 ctrl+z 这个快捷键,就是撤销当前操作回到上一步编辑状态... 阅读全文
摘要:
在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。 一、 先从一个问题说起 之前负责的项目中遇到过一个问题: 在InterceptorAdapter拦截器中对请求进行验证,把验证信息传给日志... 阅读全文
摘要:
当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。 一、怎么理解一个对象有多个状态? 一个对象和多个状态关联,每种状态又对应一种行为,也就是同一个对象会因为状态不同让你觉得这是不是同一个类。 比如,手机的HOME键: 关机状态: 没有... 阅读全文