《大话设计模式》之策略模式

KarlXu【原创】 2021-03-02 14:22:16

策略模式 将算法分别封装起来,让它们可以相互替换,此模式让算法的变化不会影响到其调用者 实现一个简单的收银功能 假如需要更多的折扣、满减、购买赠送积分,那么这里明显不能这么编写,总不可能一个折扣就新增一个 case 单纯使用工厂模式并不能解决问题,应当使用策略模式,把相同的算法归纳在一个策略里 例如不管打几折,都算是一种策略,满减和普通支付是另外的策略 建立一个抽象类 CashSuper 类,约束继承的子类(每个策略)都实现自己的计算方式 acceptCach 建立一个 CashContext 类,用来维护引用的对象,CashContext 类的构造方法传递进来的是抽象类 CashSuper 类型 而不是某个子类类型,而我们的子类都实现了计算方法,只需要传不同的子类就可以实现不同的策略

标签:
php 设计模式
原创
110 浏览

《大话设计模式》之面向对象和简单工程模式

KarlXu【原创】 2021-03-01 18:43:41

## 面向对象 ### 封装 实现一个简单的计算器功能 ```php class Program { public function calculate() { $number_a = 12; $number_b = 5; $operate = '+'; $result = 0; switch ($operate) { case '+': $result = $number_a + $number_b; break; case '-': $result = $number_a - $number_b; break; case '*': $result = $number_a * $number_b; break; case '/': $result = $number_a / $number_b; break; default: # code... break; } echo $number_a . $operate . $number_b .'='. $result; } } $program = new Program(); $program->calculate(); ``` 虽然能够满足需求,但假设另外一个地方也需要用到计算,那么你这部分的代码无法直接被其他人调用,这个时候我们需要对代码进行封装

标签:
php 设计模式
原创
118 浏览

《大话设计模式》PHP版本总结

KarlXu【原创】 2021-03-01 18:34:32

对《大话设计模式》这本书做一个 php 版本的总结

标签:
php 设计模式
原创
105 浏览

Laravel-EloquentORM高级部分解析

憧憬blog【转载】 2020-12-31 10:17:44

查询作用域 全局作用域 全局作用域允许你对给定模型的所有查询添加约束。使用全局作用域功能可以为模型的所有操作增加约束。 软删除功能实际上就是利用了全局作用域功能 实现一个全局作用域功能只需要定义一个实现Illuminate\Database\Eloquent\Scope接口的类,该接口只有一个方法apply,在该方法中增加查询需要的约束

标签:
laravel orm
转载
205 浏览

WSL2&Ubuntu安装PHP开发环境

KarlXu【原创】 2020-12-17 10:59:13

## WSL2&Ubuntu 安装 PHP 开发环境 - 更新并升级 ``` sudo apt update sudo apt upgrade ``` - 安装 nginx ``` sudo apt install nginx ``` 验证 nginx 配置 `nginx -t` 报错: ``` nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) 2020/12/16 16:47:58 [warn] 19050#19050: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 2020/12/16 16:47:58 [emerg] 19050#19050: open() "/run/nginx.pid" failed (13: Permission denied) nginx: configuration file /etc/nginx/nginx.conf test failed ``` 原因是当前用户权限不足 `su root` 切换到 root 即可 `service nginx start` 启动服务

标签:
windows wsl2 ubuntu
原创
270 浏览

Laradock用shell连接workspace

KarlXu【原创】 2020-07-04 13:19:35

1:打开laradock/.env配置文件 WORKSPACE_INSTALL_WORKSPACE_SSH=true 将其改为true,然后重新build workspace 2:打开shell工具连接workspace

原创
578 浏览

Laravel用laravel-log-viewer记录日志

KarlXu【原创】 2020-06-16 23:31:56

1:composer安装laravel-log-viewer 2:在config/app.php的providers添加服务 3:在路由器中添加路由 4:创建view文件 5:在config/logging.php新增一个自定义配置 6:测试

标签:
laravel
原创
755 浏览

Laradock配置PHP多版本共存

KarlXu【原创】 2020-06-06 01:23:29

在实际开发中肯定遇到过项目用不同的laravel版本,服务器也是用不同的php版本 导致本地跑项目的时候会存在php版本不兼容的问题,想着能不能用laradock配置多版本php共存 在网上找了很久没有能直接拿到就用的,不过在其中却得到一些启发

标签:
php docker laradock
原创
1535 浏览

Laradock配置Nginx多项目

KarlXu【原创】 2020-04-17 08:42:32

1:在laradock/nginx中新建一个vhost文件 2:打开laradock目录下的docker-compose.yml新增一条nginx配置信息 - ${NGINX_VHOST_PATH}:/etc/nginx/vhost 3:打开laradock目录下.env文件新增新增一条变量信息 NGINX_VHOST_PATH=./nginx/vhost/ 这样就可以把laradock目录下的nginx里的vhost文件挂载到nginx容器里

标签:
laradock nginx
原创
952 浏览

Laradock遇到的坑

KarlXu【原创】 2020-04-17 06:26:35

镜像资源下载慢 在 env 文件中设置: CHANGE_SOURCE=true UBUNTU_SOURCE=aliyun 最好设置一下时区 WORKSPACE_TIMEZONE=PRC 构建workspace速度慢 打开laradock目录下的workspace下的Dockerfile 在该处添加中科大的源也就是国内加速

标签:
docker laradock
原创
832 浏览