设计模式的命名啊什么的,我基本上已经忘记得差不多了,我就把我现在表述的这个东西叫做按需加载吧。

需求:

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按需加载方式来增加程序的灵活度相关推荐

  1. php拓展板块 按需开启,php如何按需加载方式来增加程序的灵活度

    设计模式的命名啊什么的,我基本上已经忘记得差不多了,我就把我现在表述的这个东西叫做按需加载吧. 需求: 1.我希望有一个配置文件读写类,不需要修改原本这个配置文件读写类就可以实现扩展: 2.这个扩展是 ...

  2. React-router 4 按需加载的实现方式及原理(Code Splitting)

    React-router 4 介绍了在router4以后,如何去实现按需加载Component,在router4以前,我们是使用getComponent的的方式来实现按需加载的,router4中,ge ...

  3. iOS和tvOS游戏按需加载资源简介

    2019独角兽企业重金招聘Python工程师标准>>> 戴维营教育翻译:感谢Davis Allie的An Introduction to On-Demand Resources on ...

  4. vue项目实现路由按需加载(路由懒加载)的3种方式

    vue项目实现路由按需加载(路由懒加载)的3种方式 1.vue异步组件 2.es提案的import() 3.webpack的require,ensur *1.vue异步组件技术 ==== 异步加载 v ...

  5. vue项目实现按需加载的3种方式

    vue异步组件技术 vue-router配置路由,使用vue的异步组件技术,可以实现按需加载.这种方式下一个组件生成一个js文件 用例: {path: '/promisedemo',name: 'Pr ...

  6. vue中路由按需加载的几种方式

    使用vue-cli构建项目后,我们会在Router文件夹下面的index.js里面引入相关的路由组件,如: import Hello from '@/components/Hello' import ...

  7. ant-design如果按需加载组件

    Ant Design React按需加载 Ant Design是阿里巴巴为React做出的组件库,有统一的样式及一致的用户体验 官网地址:https://ant.design 1.安装: npm in ...

  8. ionic入门教程第十六课-在微信中使用ionic的解决方案(按需加载加强版)

    对于微信端来说,其实使用ionic是一个比较大的前端框架. 有更多比较轻量化的前端框架可以选择. 但是使用ionic有一个明显的优点就是,能够做到一端开发,三端同步上线. 这个梗说了好多遍了,但确实是 ...

  9. react项目如何按需加载antdDesign组件

    react项目如何按需加载antdDesign组件分为两种情况: 第一种手写的,不使用脚手架: 1.安装: npm install ant --save 2.引用: import { Alert, F ...

最新文章

  1. iOS_Spring自动生成Model,Service,Controller 之 介绍
  2. python代码案例详解-第7.20节 案例详解:Python抽象类之真实子类
  3. vue怎么引入js文件_Vue核心知识:8.3 vuex在vue-cli中的应用,文件之间的导出与引入...
  4. 【小技巧】notepad++ 输入中文无响应
  5. csgo机器人扔道具_雕友投稿 | 我裂开了, CSGO终于更新了
  6. 开发自定义JSF组件(4) 保存状态与恢复状态
  7. 史上最黑科技 | 人造肌肉、DNA折叠、柔性外骨骼…
  8. linux7.2配置多路径软件,RHEL6使用系统自带多路径软件配置多路径,rhel6路径
  9. 综述 | Google-斯坦福发布~深度学习统计力学
  10. dp----最少硬币问题
  11. Linux的企业-Codis 3集群搭建详解
  12. 25%的CPU利用率也能够让一台笔记本如此狼狈 (小红伞)
  13. 百度文库复制文字(一个按钮,关闭JS功能即可,浏览器100%有效)2021年
  14. Unity3D+moba+技能指示器(二)
  15. 游戏开发中的复杂度与银弹
  16. Java安全-注入漏洞(SQL注入、命令注入、表达式注入、模板注入)
  17. Window_MySQL初始化(重置)数据库
  18. 平安好医生与近50家大型医院合作共建“互联网医院”
  19. 基于redis库存刷盘类相关业务实现总结
  20. WebLogic-ONS configuration failed ONS 配置失败

热门文章

  1. python小案例_Python的应用小案例
  2. 7 centos 源码安装samba_centos 7 安装 samba 服务
  3. php文件教程,php的文件上传入门教程(实例讲解)
  4. php读取文件和读取redis,本地测试读取redis和普通文件缓存的速度,redis慢一倍?...
  5. python算法编程_Python算法编程
  6. 原生 ajax查询,原生ajax啦啦啦
  7. ora03135连接失去联系 进程id 0_进程组、会话、控制终端概念,如何创建守护进程?...
  8. C# 解决串口接收数据不完整
  9. python新手如何度过小白期,不再当菜鸟程序员?
  10. Spring面向切面编程