`
flysnail
  • 浏览: 92870 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对设计模式—strategy模式的认识

阅读更多
最近学习一下设计模式中的strategy模式,下面是我对 strategy模式的认识。
strategy是对象行为型模式,主要是定义一系列的算法,把这些算法一个
个封装成单独的类.
strategy的实现是由一个抽象类作为一个基类,在基类的基础上生成不同的类,这些类为我们在不同场景提供了不同的选择。
比如说,最近台湾要公投,出现台海危机,我们应如何应付出现的危机那,这时我们提供的多种方案供我们在不同的危机做不同的处理。
public abstract class CrisisEvent
{
     public void happen();//发生危机
      public abstract void dealEvent();//应对危机方案
}
    
public class CrisisEventSmallWar extends CrisisEvent
{
   public void dealEvent()
   {
         //小规模开战,没有美国等参与
    }
}
   
public class CrisisEventBigWar extends CrisisEvent
{
    public void dealEvent()
    {
        //大规模开战,炸掉美国航母  
     }    
}
   
public class CrisisEventExecute
{
   private CrisisEvent   _crisisEvent;
     
   public CrisisEventExecute(CrisisEvent crisisEvent)
   {
      this._crisisEvent = crisisEvent;  
   }

   public void dealEvent()
   {
      _crisisEvent.dealEvent();
   }
  
   public void changeCrisisEvent(CrisisEvent otherCrisisEvent)
   {
      _crisisEvent = otherCrisisEvent;
   }
}
 
public class TestDealEvent()
{  
   public static void main(String[]args)
   {
     CrisisEventExecute smallCrisisEvent = new CrisisEventExecute(new CrisisEventSmallWar);
     smallCrisisEvent.dealEvent();
     CrisisEventExecute bigCrisisEvent = new CrisisEventExecute(new CrisisEventBigWar);
     bigCrisisEvent .dealEvent();
   }
}
  


Strategy 和Factory 有一定的类似,Strategy 相对简单容易理解,并且可以在运行时刻自由切换。Factory 重点是用来创建对象。
Strategy 适合下列场合:
1.以不同的格式保存文件;
2.以不同的算法压缩文件;
3.以不同的算法截获图象;
4.以不同的格式输出同样数据的图形,比如曲线 或框图bar 等
5
3
分享到:
评论

相关推荐

    二十三种设计模式【PDF版】

    设计模式之 Strategy(策略) 不同算法各自封装,用户端可随意挑选需要的算法. 设计模式之 Chain of Responsibility(责任链) 各司其职的类串成一串,好象击鼓传花,当然如果自己能完成,就不要推委给下一个. 设计模式...

    C++设计模式精解

    从提供的文件信息中我们可以提取到的IT知识点主要集中在C++设计模式方面。具体的知识点可以分解为以下几点: ...同时,也能对学习设计模式的过程有一个更全面的认识,从而更好地掌握这些设计思想。

    C#23种设计模式_示例源代码及PDF

    装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案, 装饰模式 提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由 一些基本功能的排列组合而产生...

    深入浅出设计模式样章

    《深入浅出设计模式样章》是一本专为软件开发者准备的指南,旨在帮助读者理解和掌握设计模式这一核心编程概念...样章虽然只是全书的一部分,但已经足够让读者对设计模式有初步的认识,并激发他们进一步深入研究的兴趣。

    23种设计模式(C++).pdf

    而在讨论设计模式时,双分派的概念可以进一步提升对Visitor模式的认识。设计模式的重要性不言而喻,它们是软件设计中不可或缺的工具,能够使开发者更加高效地进行面向对象的分析和设计。 在本书的附录部分,作者...

    GoF+23种设计模式解析附C++实现源码.pdf

    通过对GoF的23种设计模式的学习和理解,我们可以深刻认识到这些模式对于提高软件质量和效率的重要性。每个模式都针对特定的问题提出了有效的解决方案,帮助我们更好地设计和构建高质量的软件系统。同时,通过实际的...

    新版设计模式手册-笔记

    《新版设计模式手册》中的笔记通过21个设计模式的概念图,直观地展示了这些模式的结构和交互方式,帮助读者形成清晰的认识。同时,生活类比将复杂的编程概念与日常经验相结合,使学习更加生动有趣。例如,单例模式...

    Head.First设计模式_PDF.part1

    第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton、Command、Adapter、Facade、Templat Method、Iterator、Composite、State、Proxy。最后三章比较...

    02-软件设计原则 模式深度解析和案例分析

    通过对软件设计原则和设计模式的深度解析,以及一系列应用策略的讲解,本课程旨在帮助软件工程师建立起良好的设计思维,并能够在实际工作中灵活运用各种设计模式。通过案例分析和实战演练,学员不仅可以学习到设计...

    c#设计模式随书源码.rar

    这些设计模式的源码示例将帮助你深入理解每种模式的核心思想和应用场景,通过实际编码加深对设计模式原理的认识,提升软件开发的灵活性和可维护性。学习并熟练运用这些模式,将有助于你编写出更高质量的C#代码。

    策略模式1

    策略(Strategy)设计模式目录 策略(Strategy)设计模式 1 一、 模式讲解 2 认识策略模式 2 (1)、 策略模式的功能 2 (2)、 策略模

    Raywendich (Design Patterns by Tutorials) 代码

    总之,《Raywendich设计模式实战教程》的源代码提供了一个绝佳的学习平台,它不仅涵盖了设计模式的实践应用,还结合了Swift 4的特性,让开发者能够更好地掌握面向对象编程的精髓,同时深化对数据结构和算法的认识。...

    实验四实验指导书1

    实验要求不仅包含了对设计模式理论的理解,还强调了实际编码能力,要求学生能够将设计模式应用于实际问题解决,从而加深对设计模式原理及其价值的认识。通过这次实验,学生不仅可以提升编程技能,还能增强面向对象...

    specification 规格模式

    规格模式(Specification Pattern),是由Eric Evans和Martin ...在实际应用中,规格模式常常与查询对象(Query Object)、策略模式(Strategy Pattern)等其他设计模式结合使用,共同构建出灵活且易于扩展的软件架构。

    Packt.Learning.Python.Design.Patterns.2nd.Edition.2016.2

    ### Python设计模式学习知识点 ...通过以上介绍,相信你已经对Python设计模式有了初步的认识。接下来的关键在于不断实践,将这些理论知识转化为自己的技能。希望你能通过不断学习和实践,成为一名优秀的Python开发者。

    MyBatis学习总结

    类型 设计模式主要分为三类:创建型模式、结构型模式和行为型模式。 1. 创建型模式(Creational Patterns):如单例模式(Singleton)、工厂模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式...

    咨询常用分析模型 战略实施模型(Strategy Implementation Model).pdf

    在这一过程中,不同的企业会根据自身的特点和环境,选择或设计适合自己的战略实施模式。文中提到的四种模式——指挥型、变革型、合作型和文化型,各有特点,分别适用于不同的企业环境和战略需求。 首先,指挥型模式...

Global site tag (gtag.js) - Google Analytics