美文网首页程序员@IT·互联网
用策略模式写点东西及一些思考(一)

用策略模式写点东西及一些思考(一)

作者: 35d4de9f3e0b | 来源:发表于2017-10-27 20:19 被阅读49次

最近找了一份有关PHP开发的工作,由于公司现在使用的框架大部分都为Thinkphp5.0,但还有一些老的在使用中的项目还是Thinkphp 3.2版本,因此给了我一个项目要求我把它升级为5.0版本。

使用过TP(Thinkphp)的人应该知道3.2和5.0的差别还是很大的,其中的一些方法名和模版标签的使用方式都发生了改变。我当然是不想干出一个个文件搜索关键词来修改的蠢事的,于是我又开始动脑筋偷懒了。

首先说一下为什么想起用策略模式

其实我也觉得设计模式是种挺玄乎的东西。平时并不怎么用的到,因为平时大多是在别的大佬写好的代码上修改,即便对设计模式知道个只鳞片爪,也难有用武之地。

这次我想做一个简单的东西,主要目的是把html文件上嵌入的tp3.2标签及方法修改为tp5.0对应的标签及方法。它的运行效果可以是这样的。

猜猜SU是啥意思

如图,它应该要有两个方便上传和取回文件的按钮以及一个核心的转换按钮。点击按钮后,软件内部会在目标文件上开启一条管道,一行行的读取数据,同时将读到的数据放入到TP3.2转5.0的算法中进行转换,随后把转换过的语句输出到前台显示以方便改善算法。最后将转换完成的数据带格式的发回到另一文件中。

这里它使用的是TP3.2转5.0的算法。但是仔细想想,日后我也许又会遇到类似的需求,所以转换的按钮会越来越多,我需要往这个系统中不断的加入新的按钮及算法来适应各种情况,为实现这种设计,我想到了策略模式。

策略模式(Strategy),定义了算法家族,分别封装起来,让它们之间可以互相替换,从模式让算法的变化不会影响到使用算法的用户

上面的引文出自《大话设计模式》,程杰老师讲的很好吧,但是读了之后我发现自己完全不知道应该怎么做。算了,先参考下别人的例子搭框架吧。

目录结构

完事开头难,我觉得写代码都是难在开头搭项目目录的时候,往往怀着满腔豪情壮志准备大写一通,却在取项目名和包名上纠结许久。

讲道理老夫写代码从来都是一把梭,想到什么就会做什么。在src目录下创建strategy包用来存放所有可能用到的策略类;创建service包用来存放业务逻辑上的代码;创建temp包来存放目标文件及生成文件;创建view包存放GUI类。所以整个项目的目录结构可以是这样的

项目名真的取名无力

类图及雏形

参考CSDN上的博主“真实的归宿”所写的文章《设计模式 ( 十八 ) 策略模式Strategy(对象行为型)》后,老夫开始搭建自己这个小东西的类图。

创建接口Change并定义change方法;创建TPChange实现Change接口,并实现change方法;创建FileHelper作为具体的Context类并提供包含Change对象的构造方法,提供execute方法执行操作。类图可以是这样的

这只是我目前想到的一些思路了

以上就是我能够想到的一些东西了,接下来开始完善这个小东西吧。

相关文章

  • 用策略模式写点东西及一些思考(一)

    最近找了一份有关PHP开发的工作,由于公司现在使用的框架大部分都为Thinkphp5.0,但还有一些老的在使用中的...

  • 用策略模式写点东西及一些思考(二)

    一、首先要搞定的东西 首先我需要搞定的是文件的读取以及将读取到的数据带格式的整个放到另一个文件的功能。首先,请看代...

  • 策略模式,是如何解耦算法的?

    策略模式,是对谁和谁的解耦? 策略模式,怎么用? 策略模式(Strategy Pattern),定义了一系列算法并...

  • 使用策略枚举来代替策略模式

    策略模式实践 举例用策略模式实现加减运算,首先定义抽象策略角色(Strategy接口) 然后定义加减法具体策略角色...

  • 设计模式思考(一)策略模式

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

  • "IF ElSE"

    用的策略模式 来消除if else ,当然代码中也还是存在一些if else 但 都是一些简单的判断 这...

  • 29 Java设计模式系列-策略模式

    策略模式 策略模式是非常常见的设计模式之一,写个笔记,记录一下我的学习过程和心得。 首先了解一些策略模式的定义。 ...

  • 策略模式

    由于策略模式和工厂模式很像 主要区别 我的理解: 工厂模式就是需要什么生产什么 策略模式就是根据已有的策略选择用什...

  • Java策略模式

    在阎宏博士的《Java与模式》一书中开头是这样描述策略(Strategy)模式的:策略模式属于对象的行为模式。其用...

  • 面向对象模式的一点思考

    面向对象模式是一种很自然的思考模式,基本上所有的东西都可以用面向对象来思考。在游戏中引入面向对象的模式思考,任何一...

网友评论

    本文标题:用策略模式写点东西及一些思考(一)

    本文链接:https://www.haomeiwen.com/subject/qlwwwttx.html