【设计模式篇】Android设计模式之-策略模式 自我见解

Android策略模式,主要有3个部分,算法抽象接口,一个上下文对象,具体算法三个部分

抽象接口实现一些公用的共有的方法。

上下文对象,对具体的方法进行,回调处理。这里面是面向接口编程。来切换对应的算法

具体算法,是实现与抽象的接口。

package com.ferris.strategy;

/**
 *  算法的接口,通过上下文来调用具体的策略实现方法
 * @author Administrator
 *
 */
public interface BaseStrategy {
	public int daohang(int daohangfangshi);

}
package com.ferris.strategy;

public class BikeSrategy implements BaseStrategy {

	@Override
	public int daohang(int daohangfangshi) {
		// TODO Auto-generated method stub
		return 0;
	}

}
package com.ferris.strategy;

public class WalkStrategy implements BaseStrategy{

	@Override
	public int daohang(int daohangfangshi) {
		// TODO Auto-generated method stub
		return 0;
	}

}
package com.ferris.strategy;

public class ContextStrategy {

	/**
	 * 设置策略,切换一个新的策略
	 */
	private BaseStrategy strategy;

	public BaseStrategy getStrategy() {
		return strategy;
	}

	public void setStrategy(BaseStrategy strategy) {
		this.strategy = strategy;
	}

	public void CalBaseSrategy(int index){
		if(strategy!=null&&strategy instanceof BaseStrategy){
			strategy.daohang(index); //切换对应的算法
		}
	}
}
时间: 2024-10-15 06:35:40

【设计模式篇】Android设计模式之-策略模式 自我见解的相关文章

设计模式之第8章-策略模式(Java实现)

设计模式之第8章-策略模式(Java实现) “年前大酬宾了啊,现在理发冲500送300,冲1000送500了.鱼哥赶紧充钱啊,理发这事基本一个月一回,挺实惠的啊.不过话说那个理发店的老板好傻啊,冲1000才送500,不如冲两次500,这样可以送600呢.”“这只能说明你不是很笨,但是也算不上聪明.”“啊?难道我想错了?”“这是一种策略,策略,懂?他如果是冲1000送700的话你是不是很大的可能性冲500?而不是1000,但是如果这样的话,在“聪明人”,对,没错,就是你这样的人来说,冲两次500表

设计模式 ( 十九 ):Strategy策略模式 -- 行为型

设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能.如查找.排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法:当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…或者case等条件判断语句来进行选择.这

设计模式(一)学习----策略模式

策略设计模式:定义一组算法,将每个算法都分装起来,并使他们之间可以互换. 策略模式就是使用的面向对象思想中的继承和多态的机制 策略模式的通用类图: Context类:Strategy类,并且和Strategy类是整体和个体的关系,即聚合关系.对策略角色个体进行封装. Strategy接口:定义这个策略或算法必须有的方法和属性. ConcreteStrategy1,ConcreteStrategy2具体策略角色实现类.实现抽象策略中的方法,该类中含有具体的算法. 上图变成Java代码: 抽象的策略

Android开发之策略模式初探

策略模式主要定义一系列的算法,学过数据结构的朋友肯定知道,对于数组从大到小进行排序有着很多的算法,比如冒泡.交换.快速插入等等,策略模式就是把这些算法封装成一个个独立的类,方便使用时候进行任意的调用.这里以字符串替代为例, 有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出.关于替代其中变量的方法可能有多种方法,这取决于用户的要求,所以我们要准备几套变量字符替代方案. 首先,我们建立一个抽象类RepTempRule 定义一些公用变量和方法: public abstract class

【设计模式】Java设计模式第零课之策略模式

从今天开始看<<Head First 设计模式>>,打算每学习一章都写一篇笔记,今天的第零篇希望是一个好的开端,能够善始善终.加油. 设计模式入门:策略模式(看实际的需求(情景)是什么,采用适当的策略) 设计原则零:不管当初软件设计的多好,一段时间之后总是成长和改变的,否则软件就会死亡. 设计原则一:找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起 把会变化的部分取出并封装起来,好让其他部分不会受到影响 这样代码引起的不经意后果变少,系统变得更有弹性

《JavaScript设计模式与开发实践》—— 策略模式

策略模式的定义是: 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换. (1) 使用策略模式计算奖金 经过思考,我们想到了更好的办法--使用策略模式来重构代码.策略模式指的是定义一系列的算法,把它们一个个封装起来.将不变的部分和变化的部分隔开是每个设计模式的主题,策略模式也不例外,策略模式的目的就是将算法的使用与算法的实现分离开来. 一个基于策略模式的程序至少由两部分组成.第一个部分是一组策略类,策略类封装了具体的算法,并负责具体的计算过程. 第二个部分是环境类 Context,

设计模式学习(一)——策略模式

前段时间买了一本书<Head First设计模式>,看了第一章后才对设计模式的概念有少许了解:它其实是开发过程中很多前人的经验与智慧的总结,帮助你在开发时采取更好的方式去设计各个类.方法.以及它们之间的调用.实现方式,让代码保持灵活性的同时又能更好地复用.基于学过一块知识一定要用文字记录.总结.巩固,而不是走马观花的原则,趁最近终于有空,特将前一段时间看的关于“策略模式”的内容总结于此. 场景描述 A公司要做一套模拟鸭子的游戏,游戏中会出现各种鸭子,一边游泳戏水,一边呱呱叫,还有一些会飞. 方

每天一个设计模式(1):策略模式

1.策略模式 问题的提出  一个模拟鸭子的游戏,游戏中出现各种鸭子,原本的设计是:设计了一个鸭子超类,并让各种鸭子继承此超类. 但是要加新功能:比如会飞的鸭子? 并且产品会不断更新. 两种不好的解决方案: 1.继承基类 如果在基类中加上fly()方法,所有的鸭子都会继承,造成其他鸭子不想要的改变,比如玩具鸭子不想要会飞. 原先设计中,鸭子叫的方法也有问题,各种鸭子叫声不一致,橡皮鸭不会叫. 并且每当有新的鸭子子类出现,都需要检查并可能需要覆盖这些行为. 2.继承接口 如果使用接口来定义行为,子类

设计模式实现(二)——策略模式的C++实现

一.策略模式的概念 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式. 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象.策略对象改变 context 对象的执行算法. 二.例子 (1) Strategy抽象类的实现 1 #ifndef STRATEGY_H 2 #define STRATEGY_H 3 4 class Strategy { 5 public: 6 Strate