dotenv 2到3版本设计模式重构实战分析
老大说了这个dotenv的重构比较适合用来学习,进行了分析,并分享了出来
github项目地址: https://github.com/vlucas/phpdotenv
dotenv是一个php写的从文件中加载环境变量的库,库本身文件数量较少,比较容易阅读。
核心api变动
2.x实例化方式
$dotenv = new Dotenv\Dotenv(__DIR__, 'myconfig');
$dotenv->load();
3.x实例化方式
$dotenv = Dotenv\Dotenv::create(__DIR__, 'myconfig');
$dotenv->load();
静态工厂方法设计模式应用
这个3.x版本create方法创建对象使用的是工厂方法设计模式
核心实例化dotenv对象由手动调用构造方法重构成了静态工厂方法,这个改变是因为这个dotenv加载.env文件需要判断env文件、envFactory对象是否传递,而这个判断是个if else的逻辑,根据构造方法不宜写逻辑定理,如果不使用静态工厂方法进行重构,那么在new DotEnv之前,必须手动判断.env是否存在。在多次实例化这个Dotenv对象时,必然造成代码重复。
通过工厂方法封装创建对象的逻辑,以避免创建对象的代码重复,是非常常见的一种设计模式的最佳实践
Copyright © 2015 Theme used GitHub CSS. 访问人/ 次