{ 设计模式 }

  • Decorator pattern

    |

    概念

    在面向对象的编程中,装饰器模式是一种设计模式,它允许动态地将行为添加到单个对象,而不会影响来自同一类的其他对象的行为。

    举例

    当我们在需要扩展一个类的方法的时候,我们需要不断地继承原始方法或上一级方法的类,加上新的方法结构,这样就实现了对于原始方法的增强。当继承关系复杂的情景下,当我们要修改其中一个类方法,会导致其他增强方法的重写,这样使代码的耦合性太强,维护成本很高。对于这种情况,我们可以试试使用装饰者模式去解决这个问题。

    就以我们最经常看到的IO操作中,构造一个InputStreamReader,File读取path封装成FileInputStream,接着被装饰成InputStreamReader

    1
    InputStreamReader reader = new InputStreamReader(new FileInputStream(new File(path)));
  • Strategy pattern

    |

    概念

    在计算机编程中,策略模式是一种行为 软件设计模式,可以在运行时选择算法。代码不是直接实现单个算法,而是接收关于在一系列算法中使用哪些算法的运行时指令。

    举例

    策略模式可以说是一种选择,它会根据调用者的属性去调用对应的算法,动态地改变对象的行为,用户可以调正对应的策略达到想要的目的。下面会举一个策略模式的Demo场景,同时将分析 Spring 中的策略模式。

    组成

    Context:一般提供setStrategy(strategy),用于设置对应的策略,同时起到封装的作用,屏蔽直接访问实际策略。

    Srategy:strategy公共接口,规定了策略的属性,方法

    ConcreteStrategy:实际策略类,实现了接口,根据具体策略实现对应的算法。

  • Abstract factory pattern

    |

    概念

    抽象工厂模式 提供了一种方式封装一组独立的工厂有一个共同的主题,而无需指定他们的具体类,即提供接口,用于创建相关或依赖对象的类。

    举例

    之前提到了 工厂方法模式,区分这两种模式的点在于 工厂方法 -> 单一产品,而 抽象工厂 -> 产品族,对于下面的例子,组件工厂类可以抽分为两种工厂,分别为生成高质量组件的工厂(HighQualityFactory) 和 生成廉价组件的工厂(LowQualityFactory),工厂生成的是产品族,一个工厂可以生成多种类别的组件,根据组件的高质量 或 廉价 两种属性确定对应的工厂。

  • Factory method pattern

    |

    概念

    定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。

    举例

    使用了工厂方法模式,最大的优点就是当我们需要一个类对象时,只需要通过将我们需要的条件告诉具体的实现工厂,工厂就会返回给我们需要的对象,将对象封装在工厂中。同时,当具体产品类型增加时,我们只需定义该类,并告诉工厂我们想要该类对象,工厂就会自动帮我们创建。