策略模式

2021-09-28  本文已影响0人  攻城虱小马褂

实际案例

一个主题切换案例

public interface Theme {
    void applyTheme();
}
public class DefaultTheme implements Theme{
    @Override
    public void applyTheme() {
        System.out.println("设置默认主题");
    }
}
public class DarkTheme implements Theme{
    @Override
    public void applyTheme() {
        System.out.println("设置暗黑风格主题");
    }
}
public class ColorfulTheme implements Theme{
    @Override
    public void applyTheme() {
        System.out.println("设置彩色风格主题");
    }
}
public class ThemeManager {
    private Theme theme;

    public ThemeManager() {
        this.theme = new DefaultTheme();
    }

    public void setTheme(Theme theme){
        this.theme = theme;
    }

    public void applyTheme(){
        this.theme.applyTheme();
    }
}
public class Client {
    public static void main(String[] args) {
        ThemeManager themeManager = new ThemeManager();
        //设置黑暗风格主题
        themeManager.setTheme(new DarkTheme());
        themeManager.applyTheme();
    }
}

主题模式更换的案例中,不同的主题风格就是一个个策略,我们可以根须需要选择不同的策略。

如何理解策略模式

定义椅子算法,将每个算法都以类的方式凤凰钻起来,并且使他们可以互相交换。

类图(TODO)

策略模式模型抽象

主题更换案例中的ThemeManager就是一个封装角色,也叫上下文角色,拼比高层对策略的直接访问。

定义每个策略必须具有的方法和属性

抽象策略的实现,具体的算法

策略模式的优点

策略模式的缺点

策略模式的具体应用

上一篇 下一篇

猜你喜欢

热点阅读