浅谈设计模式之简单工厂模式与策略模式

本文主要是关于面向对象编程(OOP)的设计模式,了解优秀软件设计的演变过程比学习优秀的设计本身更有价值,因为设计演变的过程蕴藏着巨大的智慧,是一代一代程序员的思想的结晶。通过学习设计模式,设计出易于维护、扩展、复用以及灵活性好的程序;使用多态、继承、封装提高程序的聚合度,降低耦合性。

1. 简单工厂模式(Simple Factory Pattern)

  • 又叫静态工厂模式(Static FactoryMethod
    Pattern),是指通过专门定义一个单独的类来负责创建其他类的实例,被创建的实例通常都具有共同的父类,这就是工厂。
  • 若要继续往在业务逻辑中增加新的功能,只需在工厂内部增加相应的分支,在外部编写子类的实现。

2.简单工厂模式的UML类图

  • 类图一般分为三层,第一层表示类名,如果是抽象类,则以斜体表示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注意前面的”+”表示public,”-“表示private,”#”表示protected。

  • 当类图顶端有一个<>显示时,表示这是一个接口图。第一行表示接口名,第二行表示接口里面的方法。
    接下来讨论类与类,类与接口之间的关系:
    继承用空心三角形+实线表示;
    实现接口用空心三角形+虚线表示;
    关联用实箭头表示;
    聚合用空心的菱形+实线箭头表示,聚合表示的是一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。
    合成用实心的菱形+实线箭头表示,是一种强的拥有关系,体现了严格的部分与整体的关系,部分与整体的生命周期一样。
    依赖关系是虚线箭头表示。

3.策略模式(Strategy Pattern)

  • 面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。而策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。

  • 用工厂来生成算法对象,把变化点封装起来,即在具体的策略类中封装具体的算法或者行为,并且让其继承与Strategy类,而在策略类Strategy中定义所有支持算法的公共接口。

4.策略模式解析

  • 通过以上的分析,我们可知策略模式是一种定义了一系列算法的方法,所有的方法完成相同的工作,只是具体的实现有所不同而已,它可以以相同的方式调用所有的算法减少了各种算法与算法实用类之间的耦合。
    显而易见,策略模式的Strategy类层次为Context定义了一系列可供重用的算法或者行为,继承有助于解析这些算法的公共功能;同时,简化了单元的测试,通过各自的接口即可单独测试。
  • 策略模式就是用来封装算法的,在实际使用中可用它来封装几乎所有类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,即可考虑策略模式来处理。但是在基本的策略模式中,选择实现的职责由客户端对象处理,并转给策略模式的Context对象。

你可能感兴趣的:(设计模式,工厂模式,设计模式)