创建型模式之Strategy模式】的更多相关文章

Strategy是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类. Stratrgy应用比较广泛,比如,公司经营业务变化图,可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现. 这里以字符串替代为例,有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出.关于替代其中变量的方法可能有多种方法,这取决于用户的要求,所以我们要准备几套变量字符替代方案. 首先,我们建立一个抽象类RepTempRule 定义…
Template Method模式和Strategy模式有何异同 博客分类: 设计模式 Java  Template Method模式很容易理解,就是由基类提供一个模板,将各子类中不变的行为提取到基类中实现,而各子类中可变的行为则由各子类自己重写基类方法实现.  Strategy则是在使用策略模式的应用实例内部维护一个策略实例,针对不同的子类用不同的策略实现.  来看看两者的代码实现:  Template Method模式 -- 基类 package com.dzeay.pattern.temp…
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象. 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行. 主要解决:主要解决接口选择的问题. 何时使用:我们明确地计划不同条件下创建不同实例时. 如何解决:让其子类实现工厂接口,返回的也是一个抽象的产…
模板模式 模版模式,又被称为模版方法模式,它可以将工作流程进行封装,并且对外提供了个性化的控制,但主流程外界不能修改,也就是说,模版方法模式中,将工作的主体架构规定好,具体类可以根据自己的需要,各自去实现. 几个要点,针对java: 抽象父类(防止实例化),公共方法(public),规定好工作流 抽象父类规定好抽象方法(protected),具体由子类实现,父类将抽象方法加入自己的工作流 具体子类实现父类的抽象方法 任意实例化的子类,都会按照父类工作流工作,只是部分(抽象方法实现)不同 abst…
上一节我们已经学习了原型模式,稍微复习一下:通过重写Object 类的clone() 方法实现浅克隆,浅克隆也要实现Cloneable 标记接口.而深克隆则是将对象通过序列化和反序列化 的方式进行创建和还原. 本小结将学习的是工厂模式,这个模式在平时是特别常用的,还需好好理解.我也将举一些例子给大家 . 从生活出发 假设我们今天不想做饭,想出去吃饭.肯定选定一家好吃的川菜馆,然后我们找好位置坐下,给厨师说,我想吃糖醋排骨. 稍微等待几分钟.菜就可以做好,然后给你呈上来. 这是一个很经典的例子,我…
Singleton模式 单例模式,也交单子模式,有时候系统只需要拥有一个全局对象. 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建.这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象. 一个类的返回对象一个引用(并且还是同一个)和一个获得该实例的方法(通常是getInstance) 如果调用这个方法为空的话,就创建一个实例:如果调用这个方法不为空的话,就返回这个引用. public class SingleObject { //创建 Si…
继承 program by difference. 通过继承,可以建立完整的软件结构分层.其中每一层都可以重用该层次以上的Code. 过度使用继承的代价是巨大的.应使用组合或者委托来替代继承. Template Method(使用继承)和Strategy(使用委托)模式解决了相同的问题:分离通用的算法和具体的上下文(DIP). Template Method模式. Strategy模式 Template Method模式允许一个通用算法操纵多个可能的具体实现. 而完全遵循DIP的Strategy…
应用场景 实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能.如编写排序算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法:当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…或者case等条件判断语句来进行选择.这两种实现方法我们都可以称之为硬编码,如果需要增加一种新的查找算法,需要修改封装算法类的源代码:更换查找算法,也需要修改客户端调用代码.在这个算法类中封装了大量查找算法,该类代码将较复…
本文主要介绍简单工厂模式与抽象工厂模式.以下如有叙述不当之处,欢迎批评指正,欢迎交流探讨. 一:简单工厂模式 在23种设计模式中,简单工厂模式其实是不在列的,但理解该模式对于抽象工厂模式的思想理解是有帮助的.就纯粹从字面上理解,简单工厂模式就是一种简单版的工厂模式.在日常开发过程中,相信绝大多数人都使用过.它主要是在设计上将一种产品或一系列具有相互关系的产品的创建工作,由专门设计好的类(即:工厂类)统一提供相关接口来完成.这样,在上下文中所面对的产品类的创建工作将是“隐式的”,不会直接产生对某个…
结构   意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 适用性 当要实例化的类是在运行时刻指定时,例如,通过动态装载:或者 为了避免创建一个与产品类层次平行的工厂类层次时:或者 当一个类的实例只能有几个不同状态组合中的一种时.建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些. using System; // Objects which are to work as prototypes must be based on classes whi…