首页 / PHP / 静态方法-php代码重构疑惑,求解答
静态方法-php代码重构疑惑,求解答
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了静态方法-php代码重构疑惑,求解答,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3308字,纯文字阅读大概需要5分钟。
内容图文
![静态方法-php代码重构疑惑,求解答](/upload/InfoBanner/zyjiaocheng/243/a36d227c61784fdc8f1f301435786834.jpg)
功能描述:
1.用户下面有设备和分组,设备可以被分组,然后分组之间的设备可以相互透传数据。设备上线,查找redis有没有缓存过用户、分组、设备,如果缓存过只是简单更新一下缓存的个别数据,如果没有那么先从数据库里面查找,查找后redis缓存。
2.现在是分别用UserCache、GroupCache、DeviceCache 三个类,实现缓存的读写,UserDB、GroupDB、DeviceDB三个类实现数据库的读写。且它们的方法都是静态方法,在Server中直接调用它们的方法。
重构:现在想把Cache层和DB层再封装一下,例如DeviceDataHandler 封装DeviceCache和DeviceDB,在Server中直接调用DeviceDataHandler进行设备数据存取方面的处理。
例如: Server中收到一个设备上线数据,现在处理是
(1)Server先调用DeviceDB的getDeviceInfo方法从数据库里取设备信息.
(2)Server再调用DevieCache的cacheDeviceInfo方法缓存数据。
现在想Server直接用DeviceDataHandler 的 deviceOnLineMsg()方法完成上面两步的处理。
疑惑:1.Cache层和DB层中都会有一些静态方法,如果在Server中统一只调用DataHandler方法处理数据,那么会导致DataHandler中有些方法只是对Cache层和DB层方法的简单调用,这样反而增加了工作量,并没有其它的作用。 那么我是保持现状不重构了,还是重构到DataHandler中,让DataHandler作为数据存取的对外接口?
2:如果封装到DataHandler中还是用静态方法吗? 那么就是DataHandler中是静态方法,Cache、DB层也是静态方法, 我该如何封装?
回复内容:
刚写完一个后台的一部分功能,现在打算重构一下代码,但是有些疑问,不知道该怎么处理了。
功能描述:
1.用户下面有设备和分组,设备可以被分组,然后分组之间的设备可以相互透传数据。设备上线,查找redis有没有缓存过用户、分组、设备,如果缓存过只是简单更新一下缓存的个别数据,如果没有那么先从数据库里面查找,查找后redis缓存。
2.现在是分别用UserCache、GroupCache、DeviceCache 三个类,实现缓存的读写,UserDB、GroupDB、DeviceDB三个类实现数据库的读写。且它们的方法都是静态方法,在Server中直接调用它们的方法。
重构:现在想把Cache层和DB层再封装一下,例如DeviceDataHandler 封装DeviceCache和DeviceDB,在Server中直接调用DeviceDataHandler进行设备数据存取方面的处理。
例如: Server中收到一个设备上线数据,现在处理是
(1)Server先调用DeviceDB的getDeviceInfo方法从数据库里取设备信息.
(2)Server再调用DevieCache的cacheDeviceInfo方法缓存数据。
现在想Server直接用DeviceDataHandler 的 deviceOnLineMsg()方法完成上面两步的处理。
疑惑:1.Cache层和DB层中都会有一些静态方法,如果在Server中统一只调用DataHandler方法处理数据,那么会导致DataHandler中有些方法只是对Cache层和DB层方法的简单调用,这样反而增加了工作量,并没有其它的作用。 那么我是保持现状不重构了,还是重构到DataHandler中,让DataHandler作为数据存取的对外接口?
2:如果封装到DataHandler中还是用静态方法吗? 那么就是DataHandler中是静态方法,Cache、DB层也是静态方法, 我该如何封装?
个人认为
1.有必要封装,你前面说道
设备上线,查找redis有没有缓存过用户、分组、设备,如果缓存过只是简单更新一下缓存的个别数据,如果没有那么先从数据库里面查找,查找后redis缓存。
那么这个逻辑 应该在DataHandler 中处理,你向外部暴露的应该只是获取设备的信息就可以了,外部应用不应关心你是否用了缓存或者用什么缓存,是redis还是别的.这样将来即使你存取缓存的逻辑变了也可以不用修改外部代码,比如不用db了,直接在redis落地或者其他什么方案
2.是否使用静态方法和你这个问题好像关系不大,你先搞清楚你为什么使用静态方法.因为你只给了局部信息,我没法判断你是否有使用静态方法的必要.再者如果必须使用 可以在DataHandler 中使用静态方法.后面的Cache,DB就没必要使用了,因为他们的接口不对外提供访问仅供 DataHandler 访问而已
内容总结
以上是互联网集市为您收集整理的静态方法-php代码重构疑惑,求解答全部内容,希望文章能够帮你解决静态方法-php代码重构疑惑,求解答所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。