前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【设计模式之策略模式】

【设计模式之策略模式】

作者头像
用户5640963
发布2020-03-19 09:50:10
2990
发布2020-03-19 09:50:10
举报
文章被收录于专栏:卯金刀GG卯金刀GG

1、策略模式(Strategy) 将定义的算法家族、分别封装起来,让他们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户。 策略模式属于 行为性模式 2、实现方式

Context上下文 Context 封装角色,起承上启下的作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。

代码语言:javascript
复制
/**
 * @Author: Liu 
 * @Descripition:
 * @Date; Create in 2020/3/14 20:31
 **/
public class Context {

    private IStrategy iStrategy ;

    public Context(IStrategy iStrategy){
        this.iStrategy = iStrategy;
    }
    //上下文
    public void algorithm(){
        iStrategy.algorithm();
    }
}

策略角色 抽象策略角色,是对策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性。

代码语言:javascript
复制
/**
 * @Author: Liu 
 * @Descripition:
 * @Date; Create in 2020/3/14 20:26
 **/
public interface IStrategy {
    void algorithm();
}

具体策略角色 用于实现抽象策略中的操作,即实现具体的算法

代码语言:javascript
复制
/**
 * @Author: Liu 
 * @Descripition:
 * @Date; Create in 2020/3/14 20:28
 **/
public class IStrategyAImpl implements IStrategy {
    @Override
    public void algorithm() {
        System.out.println("策略 aaaa");
    }
}

public class IStrategyBImpl implements IStrategy {
    @Override
    public void algorithm() {
        System.out.println("策略 BBB");
    }
}

client客户端

代码语言:javascript
复制
/**
 * @Author: Liu 
 * @Descripition:
 * @Date; Create in 2020/3/14 20:34
 **/
public class strategyTest {

    public static void main(String[] args) {
        Context context = new Context(new IStrategyAImpl());
        context.algorithm();
        Context context = new Context(new IStrategyBImpl());
        context.algorithm();
 
    }
}

每日提高一点点

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档