美文网首页程序员@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方法执行操作。类图可以是这样的

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

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

    相关文章

      网友评论

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

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