php按需加载方式来增加程序的灵活度
设计模式的命名啊什么的,我基本上已经忘记得差不多了,我就把我现在表述的这个东西叫做按需加载吧。
需求:
1.我希望有一个配置文件读写类,不需要修改原本这个配置文件读写类就可以实现扩展;
2.这个扩展是比如我原本的配置是txt格式的,但现在我的配置类是php或者是xml等,也可能是json
3.调用接口统一,不管什么类型的配置文件,我调用同样的 一个文件配置读写类就可以了,防止后续的代码很难维护。
那么:
1.首先,想到的是定义一个抽象类,不断的继承,通过继承不用修改这个配置文件读写类;
2.但是,我就不能统一使用这个配置文件读取类了,我调用的是我继承后的这个类;
实现思想:
好了,废话了那么多,我这里就来说一下我的实现思路,其实整个思路还是挺简单的;
/*** 定义配置文件读写类,所有的配置文件读写调用此类就可以了,统一接口*/
class Config {// 读public function read($file,$type = 'txt') {$instance = $this->getInstance($type);$instance->read($file);}// 写public function write($file,$type = 'txt') {$instance = $this->getInstance($type);$instance->read($file);}// 删public function delete($file,$type = 'txt') {$instance = $this->getInstance($type);$instance->read($file);}// 获取实际操作对象实例public function getInstance($type = 'txt') {$class_name = ucfirst($type).'Config'; // 根据文件格式实例化具体的操作类if(class_exists($class_name)) {$instance = new $class_name;} else {throw new Exception('未定义'.$class_name);}if(is_subclass_of($instance,'BaseConfig') !== 1) {throw new Exception('配置文件读写类必须继承BaseConfig');}return $instance;}
}
// 定义一个基础操作接口类,后续的文件读写必须继承这个规范
abstract class BaseConfig {abstract protected function read($file) {}abstract protected function write($file) {}abstract protected function delete($file) {}
}
// Text配置文件读写类
TxtConfig extends BaseConfig {public function read($file) {}public function write($file) {}public function delete($file) {}
}
// 其他配置文件读写类。。。
以上的代码我没测试过,我表达的仅仅是一个思想,当然,基于这种思想还可以设计出更加灵活,可以增加一个数组配置来定义不同的文件分别采用哪个类来读写,时间关系,这个问题后续有时间再更新。
php按需加载方式来增加程序的灵活度相关推荐
- php拓展板块 按需开启,php如何按需加载方式来增加程序的灵活度
设计模式的命名啊什么的,我基本上已经忘记得差不多了,我就把我现在表述的这个东西叫做按需加载吧. 需求: 1.我希望有一个配置文件读写类,不需要修改原本这个配置文件读写类就可以实现扩展: 2.这个扩展是 ...
- React-router 4 按需加载的实现方式及原理(Code Splitting)
React-router 4 介绍了在router4以后,如何去实现按需加载Component,在router4以前,我们是使用getComponent的的方式来实现按需加载的,router4中,ge ...
- iOS和tvOS游戏按需加载资源简介
2019独角兽企业重金招聘Python工程师标准>>> 戴维营教育翻译:感谢Davis Allie的An Introduction to On-Demand Resources on ...
- vue项目实现路由按需加载(路由懒加载)的3种方式
vue项目实现路由按需加载(路由懒加载)的3种方式 1.vue异步组件 2.es提案的import() 3.webpack的require,ensur *1.vue异步组件技术 ==== 异步加载 v ...
- vue项目实现按需加载的3种方式
vue异步组件技术 vue-router配置路由,使用vue的异步组件技术,可以实现按需加载.这种方式下一个组件生成一个js文件 用例: {path: '/promisedemo',name: 'Pr ...
- vue中路由按需加载的几种方式
使用vue-cli构建项目后,我们会在Router文件夹下面的index.js里面引入相关的路由组件,如: import Hello from '@/components/Hello' import ...
- ant-design如果按需加载组件
Ant Design React按需加载 Ant Design是阿里巴巴为React做出的组件库,有统一的样式及一致的用户体验 官网地址:https://ant.design 1.安装: npm in ...
- ionic入门教程第十六课-在微信中使用ionic的解决方案(按需加载加强版)
对于微信端来说,其实使用ionic是一个比较大的前端框架. 有更多比较轻量化的前端框架可以选择. 但是使用ionic有一个明显的优点就是,能够做到一端开发,三端同步上线. 这个梗说了好多遍了,但确实是 ...
- react项目如何按需加载antdDesign组件
react项目如何按需加载antdDesign组件分为两种情况: 第一种手写的,不使用脚手架: 1.安装: npm install ant --save 2.引用: import { Alert, F ...
最新文章
- iOS_Spring自动生成Model,Service,Controller 之 介绍
- python代码案例详解-第7.20节 案例详解:Python抽象类之真实子类
- vue怎么引入js文件_Vue核心知识:8.3 vuex在vue-cli中的应用,文件之间的导出与引入...
- 【小技巧】notepad++ 输入中文无响应
- csgo机器人扔道具_雕友投稿 | 我裂开了, CSGO终于更新了
- 开发自定义JSF组件(4) 保存状态与恢复状态
- 史上最黑科技 | 人造肌肉、DNA折叠、柔性外骨骼…
- linux7.2配置多路径软件,RHEL6使用系统自带多路径软件配置多路径,rhel6路径
- 综述 | Google-斯坦福发布~深度学习统计力学
- dp----最少硬币问题
- Linux的企业-Codis 3集群搭建详解
- 25%的CPU利用率也能够让一台笔记本如此狼狈 (小红伞)
- 百度文库复制文字(一个按钮,关闭JS功能即可,浏览器100%有效)2021年
- Unity3D+moba+技能指示器(二)
- 游戏开发中的复杂度与银弹
- Java安全-注入漏洞(SQL注入、命令注入、表达式注入、模板注入)
- Window_MySQL初始化(重置)数据库
- 平安好医生与近50家大型医院合作共建“互联网医院”
- 基于redis库存刷盘类相关业务实现总结
- WebLogic-ONS configuration failed ONS 配置失败
热门文章
- python小案例_Python的应用小案例
- 7 centos 源码安装samba_centos 7 安装 samba 服务
- php文件教程,php的文件上传入门教程(实例讲解)
- php读取文件和读取redis,本地测试读取redis和普通文件缓存的速度,redis慢一倍?...
- python算法编程_Python算法编程
- 原生 ajax查询,原生ajax啦啦啦
- ora03135连接失去联系 进程id 0_进程组、会话、控制终端概念,如何创建守护进程?...
- C# 解决串口接收数据不完整
- python新手如何度过小白期,不再当菜鸟程序员?
- Spring面向切面编程