Newtank

个人站

欢迎来到我的个人站~


设计模式(二)

目录

建造者模式

奖复杂对象的构建和表示分离,使得同样的构建过程可以创建不同的表示

应用

  • 需要生成的产品对象有复杂的内部结构
  • 需要生成的产品对象的属性相互依赖,需要指定生成顺序
  • 对象的创建过程独立于创建该对象的类
  • 隔离复杂对象的创建和使用

优点

  • 可以奖产品本身和产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。
  • 用户使用不同的具体建造者可以得到不同的产品对象
  • 可以更加精细控制产品的创建过程

缺点

  • 如果产品之间的差异性很大,则不适合使用建造者模式
  • 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化

状态模式

允许一个对象在状态改变的时候改变行为

应用

  • 对象需要根据状态改变行为
  • 代码中包含大量与状态相关的条件语句

优点

  • 封装了转换规则
  • 枚举了可能的状态,方便增加新的状态
  • 允许状态逻辑和状态对象合成一体
  • 可以共享状态对象

缺点

  • 增加复杂性
  • 对开闭原则支持不好