1.设计模式入门-策略模式

《HEAD FIRST 设计模式》在第一章设计模式入门中介绍了策略模式(Strategy Pattern)。

定义


策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

类图


1.设计模式入门-策略模式_第1张图片
策略模式

抽象类strategy作为接口定义。strategy_1和strategy_2分别实现了两种具体的策略。用户User可通过set方法设置策略。

代码


//策略接口:strategy.h
class strategy_interface
{
    vitual void algorithm() = 0;
} ;

class strategy_1: public strategy_interface
{
    void algorithm();
};

class strategy_2: public strategy_interface
{
    void algorithm();
};
// strategy.cpp
#include 
void strategy_1::algorithm()
{
    printf("this is strategy_1\n");
}

void strategy_2::algorithm()
{
    printf("this is strategy_2\n");
}
// user.h
class strategy_interface;
class user
{
    public:
        void Algorithm();
        void set_strategy(strategy_interface* ptr);
    private:
        strategy_interface* s_ptr;
};
// user.cpp
include "strategy.h"
void user::Algorithm()
{
    if (s_ptr !=  NULL) s_ptr->algorithm();
    else printf("no strategy for user\n");
}

void user::set_strategy(strategy_interface* ptr)
{
    s_ptr = ptr;
}

笔记


1.把变化的部分取出并封装起来,以便以后可以轻易地改动或扩充此部分,而不影响不需要变化的其他部分。
2.多用组合,少用继承。

你可能感兴趣的:(1.设计模式入门-策略模式)