第一天:简单工厂与策略模式

书摘:

面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。

策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

优点,(1)减少同类的各种算法与使用算法类之间的耦合(2)简化单元测试,使每个算法都有自己的类,可以通过自己的接口单独测试。(3)对某种算法的修改,或添加新的算法,不影响现有算法类。

在分析问题时,出现了需要在不同时间应用不同的业务规则,就可以考虑使用策略模式。此时可以与创建型的模式结合起来效果更好。

感悟:

简单工厂将类的对象(实例)的创建职责从客户端和类自身中解耦出来,符合设计原则中的S(单一职责)。类自身完成自己的职责,而创建职责交给工厂类(对象)。

结合工作中遇到的问题:

  系统中有一个任务执行器,一个任务可以是typeA,typeB, typeC三种类型中的一个,执行器根据不同的任务选择不同的执行逻辑(算法)。

  现有代码是在执行器的类中定义3个不同的方法,在通过类型具体选择调用哪个方法。

  这时,如果需要新加一种任务的类型,就要在执行器的类中新加一个方法,导致接口变化,而使客户代码需要重新编译(c++)。

  解决办法:重构现有代码,使用策略模式和简单工厂。

原文地址:https://www.cnblogs.com/neking/p/2893228.html