第2章 商场促销——策略模式
1、类设计经验积累
面向对象编程,并不是类越多越好,类的划分是为了封装,但是分类的基础是抽象,具有相同属性和功能的抽象集合才是类。
2、所谓策略模式
它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。
3、 使用简单工厂模式实现商场促销
4、使用策略模式实现商场促销
(1)策略模式类图
(2)策略模式实现商场促销
实例化一个策略上下文对象,向其传递一个策略(也可以向其传递一个参数,在其内部自动生成一个策略,这便是工厂模式结合策略模式。)。
策略上下问对象,会根据客户端传递的参数,使用初始化上下文对象的策略进行处理用户传递的参数,并返回一个结果。
(3)策略模式和工厂模式结合实现商场促销
策略上下文对象中必须要有一个策略,
- 这个策略可以不外部传递过来的。(单纯的策略模式)
- 也可以是根据外部传递的参数在内部的成员函数自动生成的。(工厂与策略的结合)
对于第二点的详尽解释:
实例化策略上下文对象时,可以不向它传递策略,而是传递一条信息,并且需要在它写一个函数,这个函数内部可以根据这条信息实例化一个策略。然后策略上下文对象可以根据这个策略进行计算。这就是工厂模式和策略模式的结合。
所谓的策略实际就是一个算法类对象,或者说一个函数类对象。