YaPiBlog


You look look you one day day de

设计模式-行为型-解释器模式

基础与定义 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子 类型:行为型 使用场景: 如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题 这种模式被用在 SQL 解析、符号处理引擎

设计模式-行为型-策略模式

基础与定义 定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户 类型:行为型 使用场景: 一个系统需要动态的在几种算法中选择一种 代码实例 比如我们去逛商场,商场现在正在搞活动,有打折的、有满减的、有返利的等等,其实不管商场如何进行促销,说到底都是一些算法,这些算法本身只是一种策略,并且这些算法是随时都可能互相替换的,...

设计模式-行为型-迭代器模式

基础与定义 定义类一种方法,顺讯访问一个集合对象中的各个元素,而又不暴露该对象的内部表示 使用场景 为遍历不同的集合结构提供一个统一的接口 访问一个集合对象,而不暴露对象内部表示 源码实例 List 的迭代器

设计模式-行为型-模版方法

基础与定义 定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现 模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤 类型:行为型 使用场景: 一次性实现一个算法不可变的部分,并将可变的行为留给子类来实现 各子类中中共行为被提取出来并集中到一个公共父类中,从而避免代码重复 源码实例 ArrayList addAll方法 代码实...

设计模式-结构型-代理模式

基础与定义 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用 代理对象在客户端和目标对象之间起到中介的作用 类型:结构型 使用场景: 保护目标对象 增强目标对象 优点: 将代理对象与真实被调用的目标对象分离 一定程度上降低了系统的耦合度 增强了对象 缺点: 会增加系统设计中类的数目 会造成请求处理速度变慢 ...

设计模式-结构型-桥接模式

基础与定义 将抽象部分与它的具体实现部分分离,使它们都可以独立地变化 通过组合的方式建立两个类之间的联系,而不是继承 类型:结构型 使用场景: 抽象和具体实现之间增加更多的灵活性 一个类存在两个或多个独立变化的维度 不希望使用继承 优点: 分离抽象部分及具体实现部分 提高类系统的可扩展性 符合开闭原则 符合合成复用原则 缺点: 增加...

设计模式-结构型-组合模式

基础与定义 将对象组合成树形结构以表示 部分-整体的层次结构,使得用户对单个对象和组合对象的使用具有一致性 组合模式使客户端对单个对西那个和组合对象保持一致的方式处理 就是将多个对象组合成一个对象,简化对对象的访问 类型:结构型 使用场景 处理一个树形结构 希望客户端可以忽略组合对象与单个对象的差异时 优点: 清楚的定义层次的复杂对象 让客户端...

设计模式-结构型-享元模式

基础与定义 提供减少对象数量从而改善应用所需的对象结构方式 运用共享技术有效地支持大量细粒度的对象 类型:结构型 使用场景 常常应用与系统底层的开发,解决系统性能问题 系统有大量相似对象、需要缓冲池的场景 优点: 减少对象的创建,降低内存中对象的数量,降低内存,提高效率 缺点: 关注内/外状态,关注线程安全问题 提高系统复杂度 源码...

设计模式-结构型-适配器模式

基础定义 将一个类的接口转换成客户期望的另一个接口 使原本接口不兼容的类可以一起工作 类型:结构型 使用场景: 已经存在的类,它的方法和需求不匹配时(方法结果相同或相似) 不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案 优点: 现有类复用 目标类和适配器类结偶 符合开闭原则 ...

设计模式-结构型-装饰者模式

基础与定义 在不改变原有对象的基础上,将功能附加到对象上 提供了比继承更有弹性的替代方案(扩展原有对象功能) 类型:结构型 使用场景: 扩展一个类的功能 动态给对象添加功能,功能可动态的撤销 优点: 继承的有力补充,比继承灵活,不改变原有对象的情况下给一个扩展功能 符合开闭原则 缺点: 出现更多的代码更多的类 增加程序的复杂性 源...