`
yehoubin
  • 浏览: 24327 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android设计模式—策略模式

 
阅读更多

1、策略模式概念

定义一系列算法,把他们独立封装起来,并且这些算法之间可以相互替换。策略模式主要是管理一堆有共性的算法,客户端可以根据需要,很快切换这些算法,并且保持可扩展性。

策略模式的本质:分离算法,选择实现。

2、策略模式实现

下面针对策略模式说一个小型的实现例子,个人觉得学习设计模式,最好的方法是看看设计模式概念,然后先看看简单的模式实现的例子。策略模式实现起来,主要需要3部分:抽象接口、实现算法、上下文。

  1. //算法的接口 
  2. public interface PriceStrategy 
  3.     public int setPrice(int orgPrice); 
  1. //实现一个接口,打7折商品 
  2. public class sevenPercentStrategy implements PriceStrategy 
  3. public int setPrice(int orgPrice) 
  4.     { 
  5.           System.out.println("打7折商品"); 
  6.           return orgPrice*0.7; 
  7.     } 
  8.  
  9.  
  10. //实现一个接口,打5折商品 
  11. public class fivePercentStrategy implements PriceStrategy 
  12. public int setPrice(int orgPrice) 
  13.     { 
  14.           System.out.println("打5折商品"); 
  15.           return orgPrice*0.5; 
  16.     } 
  17.  
  1. //实现一个上下文对象 
  2. public class DstPrice 
  3. {   
  4.     private PriceStrategy mPriceStrategy;   
  5.        
  6.     public void setPriceMode(PriceStrategy priceMode) 
  7.     {   
  8.         mPriceStrategy = priceMode;   
  9.     }   
  10.        
  11.     public int ExeCalPrice(int price) 
  12.     {   
  13.         mPriceStrategy.SetPrice(price); 
  14.     }   
  15. }   

上面是一个最简单的策略模式的实现方式,按照功能分为3个部分,定义算法抽象接口,然后根据具体算法实现这些接口,最后需要定义一个上下文对象。这里的上下文对象主要用来切换算法,上下文对象里面也是针对接口编程,具体算法实现被封装了。

3、策略模式的理解

上面实现的只是一种最简单的策略模式的框架,实际应用的时候,我们可以针对不同情况修改上下文对象和具体的算法实现。比如说,可以增加一个抽象类实现作为算法模板。抽象类里面我们可以封装一些公共的方法。这样实现具体的算法的时候,每个算法公共部分就被分离出来。

策略模式的目的是把具体的算法抽离出来,把每个算法独立出来。形成一系列有共同作用的算法组,然后这个算法组里面的算法可以根据实际情况进行相互替换。

策略模式的中心不是如何实现这些算法,而是如何组织和调用这些算法。也就是把我们平时写到一块的算法解耦出来,独立成一个模块,增强程序的扩展性。

策略模式里面的算法通常需要数据执行,我们可以根据实际情况把数据放在不同地方。例如可以放在上下文类里面,然后每个算法都可以使用这些数据。或者对接口封装一个抽象类,在抽象类里面添加数据。这些可以根据实际的情况综合考虑。设计模式里面没有一成不变的万能模式,每种模式都有变化版本,需要根据实际的项目进行变通。

4、策略模式优缺点

定义一系列算法:策略模式的功能就是定义一系列算法,实现让这些算法可以相互替换。所以会为这一系列算法定义公共的接口,以约束一系列算法要实现的功能。如果这一系列算法具有公共功能,可以把策略接口实现成为抽象类,把这些公共功能实现到父类里面,对于这个问题,前面讲了三种处理方法,这里就不罗嗦了。

避免多重条件语句:根据前面的示例会发现,策略模式的一系列策略算法是平等的,可以互换的,写在一起就是通过if-else结构来组织,如果此时具体的算法实现里面又有条件语句,就构成了多重条件语句,使用策略模式能避免这样的多重条件语句。

更好的扩展性:在策略模式中扩展新的策略实现非常容易,只要增加新的策略实现类,然后在选择使用策略的地方选择使用这个新的策略实现就好了。

客户必须了解每种策略的不同:策略模式也有缺点,比如让客户端来选择具体使用哪一个策略,这就可能会让客户需要了解所有的策略,还要了解各种策略的功能和不同,这样才能做出正确的选择,而且这样也暴露了策略的具体实现。

增加了对象数目:由于策略模式把每个具体的策略实现都单独封装成为类,如果备选的策略很多的话,那么对象的数目就会很可观。

只适合扁平的算法结构:策略模式的一系列算法地位是平等的,是可以相互替换的,事实上构成了一个扁平的算法结构,也就是在一个策略接口下,有多个平等的策略算法,就相当于兄弟算法。而且在运行时刻只有一个算法被使用,这就限制了算法使用的层级,使用的时候不能嵌套使用。

5、Android中的应用

下面说说在Android里面的应用。在Android里面策略模式的其中一个典型应用就是Adapter,在我们平时使用的时候,一般情况下我们可能继承BaseAdapter,然后实现不同的View返回,GetView里面实现不同的算法。外部使用的时候也可以根据不同的数据源,切换不同的Adapter。

 

出自http://mobile.51cto.com/ahot-418972.htm

分享到:
评论

相关推荐

    android常用设计模式

    Android 设计模式系列还包括工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式、适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式、解释器模式、模板方法模式、职责链模式、命令...

    设计模式之策略模式Android计算器实例

    在这个"设计模式之策略模式Android计算器实例"中,我们将探讨如何在Android应用中使用策略模式来实现一个计算器的功能。 首先,策略模式的核心思想是定义一系列算法,并将每个算法封装起来,使它们可以互相替换。...

    android应用开发设计模式之-策略模式

    在Android应用开发中,设计模式是一种重要的编程范式,它为解决特定问题提供了标准的解决方案。今天我们将深入探讨其中的一种——策略模式。策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java...

    android设计模式

    "android设计模式"这一主题,主要涵盖了一些常见的设计原则、模式以及如何在Android环境中应用它们。《设计模式之禅》作为一本经典著作,其深入浅出的讲解方式使得读者能够轻松掌握设计模式的核心理念。 1. **设计...

    Android设计模式

    下面将详细探讨Android设计模式中的关键知识点。 1. 单例模式(Singleton):在Android中,单例模式用于确保一个类只有一个实例,并提供全局访问点。例如,Android系统的应用上下文(Context)就是通过单例模式管理的...

    Android源码设计模式解析与实战 pdf 完整版

    总的来说,《Android源码设计模式解析与实战》是一本深入浅出的Android设计模式教程,对于希望提升Android开发技能的工程师来说,是一份不可多得的学习资料。通过对书中的知识点进行深入学习和实践,开发者将能更好...

    Android策略模式简单Demo

    这个“Android策略模式简单Demo”展示了如何将策略模式应用到Android开发中,帮助我们更好地理解和实践这一设计模式。通过阅读提供的博客文章(http://blog.csdn.net/qq_28690547/article/details/50683310),你...

    Android-23种设计模式

    在Android开发中,设计模式是提升代码质量和可维护性的重要工具。设计模式是对软件设计中常见问题的解决方案的模板,经过时间和实践的检验,能够帮助开发者有效地解决复杂性问题,提高代码的重用性和可扩展性。本...

    Android源码设计模式

    在Android系统中,设计模式是开发者理解和驾驭代码的关键。这些模式源自《设计模式:可复用面向对象软件的基础》一书,由“Gang of Four”(GoF)提出,被广泛应用于各种软件开发中,尤其是在Android框架内。本文将...

    设计模式在android中的应用之2,策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Android开发中,策略模式的应用可以帮助我们更好地实现灵活性和可扩展性,使得代码结构更清晰,易于维护。下面我们将详细探讨策略模式的原理、如何...

    Android源码设计模式解析与实战

    《Android源码设计模式解析与实战》是一本深入探讨Android系统源码中设计模式应用的专业书籍,适合已经有一定Android开发基础并希望进一步提升技术能力的开发者阅读。这本书旨在通过实例解析,帮助读者理解并掌握...

    android 源码设计模式

    在Android开发领域,深入理解源码中的设计模式是提升技能水平的关键步骤。设计模式是解决软件设计中常见问题的经验总结,它们是经过实践验证的、可重用的解决方案。在这个"android 源码设计模式"主题中,我们将探讨...

    Android源码设计模式解析与实战.rar

    9. **策略模式**:例如,Android的动画系统允许开发者选择不同的动画策略,如AlphaAnimation、ScaleAnimation等。 10. **模态模式**:DialogFragment在Android中就是一种模态模式的体现,它阻止用户与背景交互,...

    Android源码设计模式解析与实战PDF

    本书专门介绍Android源代码的设计模式,共26章,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。主要内容为:优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、...

    策略模式在android中使用

    总之,策略模式是Android开发中一种非常实用的设计模式,它通过封装不同的算法策略,实现了代码的解耦和可扩展性,使得我们可以根据需求灵活地改变对象的行为,而不影响整体的系统结构。在实际项目中,我们应该善于...

    Android 源码设计模式解析与实战

    本书专门介绍Android源代码的设计模式,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。本书的主要内容为:优化代码的第一步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、...

    Java和Android源码设计模式

    ### Java和Android源码设计模式 #### 前言:迈向精通之路——设计模式的重要性 在软件开发领域,设计模式被视为提升代码质量和可维护性的关键工具。本文将深入探讨Java和Android开发中常用的设计模式,并结合实际...

Global site tag (gtag.js) - Google Analytics