`
stanxl
  • 浏览: 4418 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

策略模式浅谈

 
阅读更多

其实策略模式,从字面意思上理解,类似于我想达到某一种效果时,不用去煞费苦心的再去想方法,而是已经做好的方法只要去调用就可以了

那么体现到java程序设计里,也可以这么理解,如果过程是随着参数的变化而变化的,这个时候就可以用策略模式

好像有点类似于开车,想要车跑的速度不一样,只需要轻轻的换下档位就O了,每个档位对应的速度范围都是设计好的

从下面的这个小小的遍历文件的例子来看效果:

现在我想遍历E盘下的abc文件夹下的所有文件,那么遍历文件的代码是不变的,遍历到文件以后,怎么处理是变化的,这也刚好响应了程序设计的基本原则,将变化的代码和不变的代码分离开
先看如下代码:

import java.io.*;
public class Test{
    public static void walkDir(File file){
        File[] files = file.listFiles();
        for(File ff : files){
            if(ff.isDirectory()){
                    walkDir(ff);//递归调用,会去开辟新空间
            }
            System.out.println(ff.getAbsolutePath());
            //这里将得到遍历到的文件的绝对路径
        }
    }
    public static void main(String[] args){
        walkDir(new File("E:/abc"));
    }
}

上面代码遍历到文件后,输出了文件的绝对路径

那么现在假如我不想输出文件的绝对路径,而是想做其它的处理,这里就得把代码换掉,比如说想把某个文件删除,或者是改名字,当然这里只是针对这个例子做些简单的改动,貌似看起来不是太麻烦,那么假如是这里要改动的是上百、上千行的代码呢,就会显得十分的不方便

人家说杀死一个程序猿,不需要干别的,改两次需求就可以了……………

所以这时候策略模式就可以派上用场了,看下面的代码:
在外面定义一个接口:

interface Process{
    public void process(File file);
}
public class Test{
    public static void walkDir(Process p,File file){
        File[] files = file.listFiles();
        for(File ff : files){
            if(ff.isDirectory()){
                    walkDir(p,ff);
            }
            //这里就把遍历文件的代码与处理文件的代码分离开了
            p.process(ff);
        }
    }
    public static void main(String[] args){
        Process p1 = new Process(){
            public void process(File file){
                System.out.println(ff.getAbsolutePath());
                //p1 处理器,只是简单的输出文件的绝对路径;
            }
        };
        Process p2 = new Process(){
            public void process(File file){
                private count = 0;
                String path = file.getAbsolutePath();
                int index = path.lastIndexOf("\\");
                String str = path.substring(0,index);
                file.renameTo(new File(str+ "/" + count));
                count++;
                //p2处理器,将遍历到的文件名字改成相关数字
            }
        };
        //如果想用p2,只需要将下面的第一个参数改成p2,就可以了
        walkDir(p1,new File("E:/abc"));
    }
}

那么这里要提一点,为什么要把Process设置为接口呢?
我们知道接口具有可以达到完全解耦的目的,降低了耦合性,那么现在我里面写好的是两种方法,假如客户端程序猿想去自己定义一个方法,这个时候,接口的作用就体现出来了,它只要去实现这个接口,重写里面的process()方法,根据他自己的需要再去写方法,而我只是把这个框架提供给他,他可以自由发挥
这是这个设计模式的简单应用举例,就先这样吧,后续再完善……………..

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    设计模式浅谈1——策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件工程中,我们经常遇到需要根据不同条件或场景动态地改变算法的情况。策略模式就是为了解决这类问题而诞生的,它允许我们用不同的策略(即算法)...

    浅谈简单工作流设计——责任链模式配合策略与命令模式的实现

    本文以项目中的一个工作流模块,演示责任链模式、策略模式、命令模式的组合实现!最近在做的一个项目,涉及到的是一个流程性质的需求。关于工程机械行业的服务流程:服务任务流程和备件发运流程。项目之初,需求不是...

    设计模式浅谈种PPT学习教案.pptx

    本文将围绕“设计模式浅谈”这一主题,深入探讨设计模式的基本概念、核心原则以及在实际应用中的作用,特别关注创建型设计模式的介绍与应用。 首先,我们不得不面对这样一个现实:在软件开发过程中,代码的紧密耦合...

    设计模式浅谈24种.ppt

    在《设计模式浅谈24种》中,主要讨论了24种经典的GOF设计模式,这些模式被分为三大类:创建型、结构型和行为型。 创建型模式主要关注对象的创建,包括以下几个核心模式: 1. **Abstract Factory**(抽象工厂)模式...

    浅谈多级分布式库存管理模式在海洋石油企业的应用.pdf

    针对传统库存管理模式的弊端,戴雀桥在其文章《浅谈多级分布式库存管理模式在海洋石油企业的应用》中提出了一个基于协调中心的多级分布式库存管理模式。这种模式强调从供应链整体的角度出发,协调和控制供应链上的...

    浅谈小学数学深度学习的教学策略.pdf

    与传统教学模式相比,深度学习更注重全过程学习,强调学习过程的可视性,以及心灵感知的作用。 在小学数学深度学习的教学策略上,有几点是值得探讨的: 首先,营造良好的教学环境至关重要。由于小学数学较为抽象,...

    中学体育教学运用分组教学模式浅谈.docx

    【中学体育教学运用分组教学模式浅谈】 中学体育教学中采用分组教学模式是一种创新的教学方法,旨在尊重学生的主体性,提升教学质量和效率。这种模式对于激发学生的学习兴趣、提高解决问题的能力、促进身心健康以及...

    浅谈电商B2C模式

    电商平台如淘宝商城(现天猫)的提价策略,反映出B2C模式对信用体系、价格竞争以及服务质量的要求日益提升,同时,也显示出该模式的盈利潜力和市场前景。 四、B2C模式面临的困难 尽管B2C模式展现出强大的生命力,...

    快捷支付浅谈

    ### 快捷支付浅谈:便捷性和安全性分析 #### 一、引言 近年来,随着互联网技术的迅猛发展,各种新型支付方式不断涌现,其中快捷支付作为一种新兴的互联网支付模式,因其便捷的操作流程和较高的用户体验受到广泛...

    玩具行业专题报告:玩具系列VI之商业模式:推本溯源浅谈我国中小玩具企业突围之路.pdf

    玩具行业的商业模式探讨集中在如何构建一个以知识产权(IP)为核心的泛娱乐...在这个过程中,IP的核心作用得到了强调,同时也提出了一个渐进式的IP布局模式,这被证明是符合大多数中小玩具企业当前发展阶段需求的策略。

    支付业务开展模式浅谈.doc

    在当今数字化时代,支付业务作为...交易中心在制定策略时,必须深入分析市场需求,结合自身优势,不断创新和改进,以确保支付业务能够有效地支持交易中心的整体发展战略,为构建健全、高效的业务生态圈提供有力支撑。

    浅谈网络营销的策略.zip

    这篇文档“浅谈网络营销的策略”将深入探讨这个主题,旨在帮助读者理解并掌握在网络环境中实施有效营销策略的关键点。 首先,网络营销的核心是了解目标市场和消费者。在数字化时代,消费者的行为模式发生了巨大变化...

    疫情防控期间学生居家学习策略浅谈.pdf

    《疫情防控期间学生居家学习策略浅谈》一文深刻剖析了这一问题,并提出了一系列行之有效的策略,以期在疫情的特殊时期保障教育的连续性和效果。 首先,文章提出“自学重于教学”的策略。这要求学生将学习的主动权...

    浅谈生鲜电商物流渠道下沉的阻碍与未来发展策略.pdf

    生鲜电商物流渠道下沉是指将电商物流配送体系从主要的城镇区域向农村地区拓展,旨在提升...生鲜电商物流下沉的成功实施将极大地促进农村地区的消费模式转变,提升农民的生活品质,并且推动整个生鲜电商行业的健康发展。

    浅谈以人为本模式下的小学学校科学管理策略.docx

    本文将深入探讨这种管理模式在小学教育实践中的应用及其科学管理策略,旨在为小学教育管理者提供参考和启示。 以人为本的管理模式,其核心理念是将师生的需求和发展放在首位,以激发师生潜能和积极性为目标,构建...

    浅谈星巴克盈利模式.doc

    星巴克的商业模式可以分为运营性和策略性两大类,两者共同构建了其独特的价值体系。 一、运营性商业模式 1. 产业价值链定位:星巴克位于咖啡产业链的下游,作为零售端,通过提供高质量的咖啡、糕点和相关商品,...

    浅谈烟草企业财务管理模式现状及创新策略

    鉴于上述问题,烟草企业财务管理模式的创新策略应包括: 1. 建立健全财务管理体系:烟草企业需要深刻理解现代企业管理思想,完善审批流程,明确岗位职责,实现重要岗位间的相互监督和制约。同时,要建立资产管理、...

    浅谈电动汽车的整车控制策略.pdf

    本文主要探讨了电动汽车的四种主要控制策略:起步控制策略、标准模式控制策略、动力模式控制策略以及经济模式控制策略。 1. 电动汽车的起步控制策略: 起步阶段是电动汽车从静止状态加速到一定速度的过程。电机在此...

    浅谈4S店的营销策略.doc

    3. **分销策略**:4S店通常采用直销模式,但也可以通过线上平台进行销售。建立多渠道的销售网络,如电商平台、社交媒体等,能扩大市场覆盖,吸引更多潜在客户。 4. **促销策略**:定期举办优惠活动,如打折促销、...

    204-2 浅谈汽车营销策略(1).zip

    这篇文档“204-2 浅谈汽车营销策略(1)”深入探讨了汽车行业的营销之道,旨在为相关人员提供宝贵的指导。以下是对这个主题的详细解析。 一、市场分析 在制定营销策略之前,对市场进行深入分析至关重要。这包括了解...

Global site tag (gtag.js) - Google Analytics