Android中设计模式--策略模式(封装会变化的算法部分,面向接口不针对实现)

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

理解:

把代码中类似,但又有差异的算法部分,提取出来,定义一个借口,不同的算法来进行不同的实现,但调用算法的客户可以进行统一的调用,因为实现了共同的借口,客户不需要知道具体的实现,而是知道怎么用,即针对接口编程,而不针对实现编程。

总结:

找出代码中可能需要变换之处,把它们独立出来,不要和那些不需要变化的代码混在一起。

例子
private TextClickInterface mClickInterface; // 采用策略模式,封装变化,实现点击处理
(客户)

public interface TextClickInterface{
<span style="white-space:pre">	</span>public void click(); // 点击事件,执行相应动作,如:预约、求片
<span style="white-space:pre">	</span>public void changeText(); // 修改点击后Text显示效果

}
(定义接口)
(实现一)
public class YuyueText implements TextClickInterface{
	private Context context;
	private MarkInfo info; // 信息
	private TextView text; // textview

	public YuyueText(Context context,MarkInfo info, TextView text){
		this.context = context;
		this.info = info;
		this.text = text;
	}

	@Override
	public void click() {
		//实现预约
	}

	@Override
	public void changeText() {
		//改变字体颜色及内容
		text.setText(R.string.mark_yuyue_success);
		text.setTextColor(context.getResources().getColor(R.color.mark_font_white));
		text.setBackgroundColor(context.getResources().getColor(R.color.mark_blue_already));
		Toast.makeText(context, "已预约成功", Toast.LENGTH_SHORT).show();;
	}

}
(实现二)
public class QiupianText implements TextClickInterface{
	private Context context;
	private MarkInfo info;
	private TextView text;

	public QiupianText(Context context, MarkInfo info, TextView text){
		this.context = context;
		this.info = info;
		this.text = text;
	}

	@Override
	public void click() {
		// 求片逻辑
	}

	@Override
	public void changeText() {
		// 改变text颜色、文字
		text.setText(R.string.mark_qiupian_success);
		text.setTextColor(context.getResources().getColor(R.color.mark_font_white));
		text.setBackgroundColor(context.getResources().getColor(R.color.mark_blue_already));
		Toast.makeText(context, "已发送求片请求", Toast.LENGTH_SHORT).show();
	}
时间: 2024-10-29 04:17:04

Android中设计模式--策略模式(封装会变化的算法部分,面向接口不针对实现)的相关文章

Android开发之策略模式初探

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

设计模式笔记:状态模式&amp;策略模式

这几天一直在忙期末考和实训,写笔记的时间也没有多少,不说废话了: 这文主要写两种模式:状态跟策略,主要是因为他们的类图一样,并且比较简单,写在同一篇文章里面容易甄别 状态模式:允许对象在内部状态改变时改变他的行为,对象看起来好像修改了他的类 先保留概念的意思,在平常的编程中,如果需要不同的状态,很一般的做法是在你要操作的类里面定义不同的常量代表不同的状态,然后if-else依据不同的状态有不同的实现: 1.你可以想象大量的if-else语句造成的低可读性和低效率 2.其次是你修改这个类的时候很麻

命令模式 &amp; 策略模式 &amp; 模板方法

一.策略模式 策略模式:封装易变化的算法,可互相替换. GoF<设计模式>中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换.该模式使得算法可独立于它们的客户变化. 比如:一个推送服务类,推送的方式,可以分为:QQ推送.邮箱推送.App推送.PC插件推送. 这里讲两个点: 1.推送方式可以互相替换: 2.这些推送方式只是单纯的属于推送服务这个类本身. 好好琢磨关键词:相互替换 二.命令模式 命令模式:解决“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题. GoF&l

第23章 行为型模式—策略模式

1. 状态模式(State Pattern)的定义 (1)定义:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化. ①算法是同一接口的不同实现,地位是平等的,可以相互替换. ②引入上下文对象,可以实现让算法能独立使用它的客户.因为这个对象负责持有算法,但不负责决定具体选用哪个算法,把选择算法的功能交给了客户. ③当客户通知上下文对象执行功能的时候,上下文会转调具体的算法. (2)策略模式的结构和说明 ①Strategy:策略接口,用来约束一系

职责链模式+策略模式+反射+配置文件,完美实现下机操作(一)

纵观机房收费系统,逻辑最复杂的也就是下机操作了,这几天一直在考虑下机操作该如何进行. 流程分析: 判断卡号是否存在与是否上机 上机时间的处理 根据时间计算消费金额 更新余额,添加记录 关于逻辑的操作主要集中在两个计算上面时间和金额.首先说上机时间的处理问题,做之前我看了下第一版机房收费系统关于下机的操作: '计算消费时间 TxtTime.Text =DateDiff("n", Trim(TxtOntime.Text), Trim(Offtime)) TxtTime.Text = Txt

设计模式-行为型模式-策略模式

策略模式 在实际工作中我用到了策略模式,但为什么要有环境角色呢? 这里我贴上英文对含义的介绍, The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it. 然后看看这种设计模式的组成, 一般的,策略模式

Android 设计模式之策略模式

策略模式的定义:定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户.本质:分离算法,选择实现 面向对象设计原则: 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起 类图 应用场景: 1. 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为. 2. 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现. 3.

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

Android策略模式,主要有3个部分,算法抽象接口,一个上下文对象,具体算法三个部分 抽象接口实现一些公用的共有的方法. 上下文对象,对具体的方法进行,回调处理.这里面是面向接口编程.来切换对应的算法 具体算法,是实现与抽象的接口. package com.ferris.strategy; /** * 算法的接口,通过上下文来调用具体的策略实现方法 * @author Administrator * */ public interface BaseStrategy { public int d

java设计模式--行为型模式--策略模式

策略模式: 1 策略模式 2 概述 3 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化. 4 5 适用性 6 1.许多相关的类仅仅是行为有异.“策略”提供了一种用多个行为中的一个行为来配置一个类的方法. 7 8 2.需要使用一个算法的不同变体. 9 10 3.算法使用客户不应该知道的数据.可使用策略模式以避免暴露复杂的.与算法相关的数据结构. 11 12 4.一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现. 13