美文网首页Java 杂谈
设计模式(1)-策略模式

设计模式(1)-策略模式

作者: 6plus | 来源:发表于2018-10-25 09:13 被阅读0次

定义

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

思考与理解

以勇士使用武器进行战斗这一事件为例:

使用算法的客户,可以理解为勇士,而算法族就是勇士的武器库。

武器库由一个接口和若干具体武器类组成,接口中定义一个attack()方法,而具体武器根据各自的效果实现这个attack()方法,上到霜之哀伤下到代达罗斯之殇,暴击减速等等。如果算法变化了,比如代达罗斯之殇拆成了水晶剑,其变化是被封装在对应的武器类之中的。

public interface weapon{
    void attack();
}
public class Daedalus implement weapon{
    @Override
    void attack(){
        System.out.println("critical strike");
    }
}

勇士类,一把武器构造一个英雄,有4个域,一个武器的私有域,一个传入武器进行构造的构造器,一个更改武器的方法和一个战斗(调用武器的attack())的方法。

public class Brave{
    private Weapon weapon;
    public Brave(Weapon weapon) {this.weapon=weapon;}
    public void changeWeapon(Weapon weapon) {this.weapon=weapon;}
    public void goToBattle() {weapon.attack();}
} 

于“我们”进行剧本的安排,在main函数中进行测试,使用任意武器构造一个勇士,并调用勇士进行攻击,最后造成的攻击效果不同。

public static void main(String[] args){
    Brave brave=new Brave(new Daedalus());
    brave.goToBattle();
    brave.changeWeapon(new Frostmourne());
    brave.goToBattle();
}

以上的过程是一个简单的策略模式的例子,将使用算法的客户与算法的变化相独立,当算法(武器)变化时,客户调用算法的方法(实际调用attack()方法)仍然不变。

在这个例子中对于将具体的实现放到了算法类中,而客户(勇士)使用时仅仅只有一个切换武器以及战斗(调用attack())接口。将变化的与不变的代码分开,体现了设计模式的封装变化,针对接口编程,不针对实现编程的原则

平常项目中想要做到自然而然,信手拈来的将变与不变分开,需要丰富的经验和敏锐的嗅觉,努力,加油_

参考:Head First 设计模式github代码

相关文章

  • 设计模式[13]-策略模式-Strategy Pattern

    1.策略模式简介 策略模式(Strategy Patter)是行为型(Behavioral)设计模式,策略模式封装...

  • 11.7设计模式-策略模式-详解

    设计模式-策略模式 策略模式详解 策略模式在android中的实际运用 1.策略模式详解 2.策略模式在andro...

  • iOS 设计模式-策略模式

    1.策略模式简介   策略模式(Strategy Pattern),是行为型模式之一(设计模式分类:https:/...

  • 策略模式+元注解方式替代大量if else写法

    1、策略模式简介 设计模式的知识可以参考我的设计模式笔记专栏:设计模式系列博客 策略模式:定义一系列算法,然后将每...

  • 23.策略模式(行为型)

    策略模式(行为型) 原书链接设计模式(刘伟) 适应算法灵活性而产生的设计模式——策略模式。 一、相关概述 1). ...

  • 设计模式

    软件开发中常用设计模式和设计原则有哪些? ##设计模式: * 1、简单工厂模式(Factory) * 2、策略模式...

  • 简说设计模式之策略模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是策略模式 策略(Strategy)模式...

  • 设计模式(Swift) - 单例模式、备忘录模式和策略模式

    设计模式(Swift) - 单例模式、备忘录模式和策略模式 设计模式(Swift) - 单例模式、备忘录模式和策略模式

  • 策略模式

    本文参考自: 《JAVA设计模式》之策略模式(Strategy) 1. 作用 策略模式属于对象的行为模式。其用意是...

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

网友评论

    本文标题:设计模式(1)-策略模式

    本文链接:https://www.haomeiwen.com/subject/zkqqtqtx.html