关闭

策略模式

标签: 设计模式
192人阅读 评论(0) 收藏 举报
分类:

定义

首先给出《Head First设计模式》中的定义:策略模式定义了算法族,分别封装起来,让他们之间可以相互替代,此模式让算法的变化独立于使用算法的客户。

这个定义还是很到位的,总的来说策略模式会让代码复用率很高,并且让代码更加规整简洁。

像我实例代码中使用了游戏中常用的一个场景,我定义了一个抽象类Person,其具有自己描述和攻击两种方法;我也定义了一个攻击方式接口,每一种具体的攻击方式都实现了该接口。并且在Person类中我提供了设置 攻击具体实现对象的方法,不同的Person子类,根据自己不同的需求设置不同攻击实现类,这样让 攻击实现类 的复用率很高,并且代码结构合理易读。
代码示例中我实现了两种角色,两个攻击方式,如果后期扩展新角色,但其攻击方式便,便可直接复用我的 攻击实现,这样会让后期代码维护变得简介。

该模式中使用接口在方法中做参数,用于接收任何其实现的类,这种方式很值得借鉴,并且工作中会经常使用这种设计方式。

这是我实例代码连接:
https://github.com/yangzhenkun/DesignPatternLearn/tree/master/src/main/java/com/yasin/DesignPatternLearn/StrategyPattern

0
0
查看评论

Android 中的那些策略模式

上篇文章 策略模式:网络小说的固定套路 介绍了策略模式 的基本概念,这篇文章我们来通过 Android 中的一些例子来加深对策略模式的理解。 首先祭上经典的策略模式 UML 图可以看到,策略模式中主要有以下几个角色: Strategy 接口,用于定义算法的固定套路 ConcreteStrategyA...
  • u011240877
  • u011240877
  • 2016-09-10 10:56
  • 4496

设计模式实战应用之一:策略模式

策略模式的定义         策略模式是应用最普遍的设计模式之一。Gof 把策略模式归类到对象行为型模式,《设计模式:可复用面向对象软件的基础》对策略模式做出了明确的定义:“Define a family of algorithms, encapsulate...
  • defonds
  • defonds
  • 2013-11-19 22:05
  • 6857

策略模式的java实现例子

1、策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 2、策略模式由三种角色组成: (1)抽象策略角色: 策略类,通常由一个接口或者抽象类实现。 (2)具体策略角色:包装了相关的算法和行为。 (3)环境角色:持有一个策略类的...
  • pnjlc
  • pnjlc
  • 2016-09-27 11:40
  • 1453

设计模式--策略模式,装饰模式

坚持着客户端代码是程序的入口,构造函数是类的入口为原则,对策略模式,装饰模式和代理模式理解整理如下:
  • u012466304
  • u012466304
  • 2014-12-08 12:57
  • 1948

代理模式与策略模式的区别!

代理模式与策略模式有一些类似的地方,比如: 策略者可以根据策略不同,执行不同的策略方法; 代理人可以被代理对象的不同,执行不同的被代理人的方法; 似乎用代码很难表达清楚二者有什么区别,那就用一种场景来描述一下二者的区别吧,理解仅供参考! 先说一些人:高层领导,市场部主管,市场部工作人员四个(...
  • rubbishcan
  • rubbishcan
  • 2013-12-20 15:02
  • 2265

大话设计模式—策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。大话设计模式中程杰老师给出的定义是这样的:策略模式(Strategy),定义了算法家族,分别封装起来,让它们之间可以互相替换,从模式让算法的变化不会影响到使用算法的用户。面向对象...
  • lmb55
  • lmb55
  • 2016-03-23 23:59
  • 1577

PHP设计模式——策略模式

声明:本系列博客参考资料《大话设计模式》,作者程杰。        策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化,即封装变化的算法。   &#...
  • jhq0113
  • jhq0113
  • 2015-05-16 22:15
  • 4098

策略模式原理及例子代码

策略模式将行为和环境隔离开来,环境角色类负责维持和查询行为的类,各种类似的逻辑算法都在各个具体的策略类中进行实现,由于环境和行为隔离开来,所以行为的逻辑变更不会影响到环境和客户端。 如果要使用策略类,则必须先抽象出需要包装的逻辑算法,试图从环境中分隔开来。策略模式一般都是将一个系列的逻辑算法包装到...
  • eddle
  • eddle
  • 2011-11-03 21:04
  • 5517

三分钟理解“策略模式”——设计模式轻松掌握

策略模式的作用: 1.使用了策略模式后,如果需要增加一种策略,那么只需要创建一个实现了Strategy接口的子类,并重写其中的函数,然后在Context的构造函数中增加这种子类的判断。客户端的代码、Context中contextInterface()的代码无需作任何修改。 2.策略模式与简单工厂模式...
  • u010425776
  • u010425776
  • 2015-08-31 11:14
  • 1309

与spring结合的策略模式

策略模式是23种设计模式之一,客户端通过制定多个算法并且封装,使得不同场景可以使用不同的策略算法。使得程序降低了耦合提高代码的复用性。接下来通过一个简单的实例来说明在实战中如何使用(即使是业务逻辑也是可以用设计模式的)。例子很简单,就是通过同一个保存的service来做不同类型产品的保存。如下图:接...
  • nethackatschool
  • nethackatschool
  • 2017-04-05 18:58
  • 1498
    个人资料
    • 访问:74865次
    • 积分:1324
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:1篇
    • 译文:0篇
    • 评论:31条