1.自己写写的第一个接口,用于一个PC官网 代理商查询接口。
```
Public function verify()
{
//获取提交数据
$str = $this->request->get('str');
If(empty($str)) {
//没有输入内容,返回错误信息
return $this->error('请输入信息');
}
//到数据库中查询是否有这个验证码
$model = Db::name('agent')->where('name', '=', $str)->find();
If(empty($model)) {
//验证码不存在,反馈错误信息
return $this->error('无代理商信息');
}
//反馈正常信息,并反馈之前查询的历史记录
return $this->success('查询的信息是正确的');
}
```
2.一天网站增加了手机端(没有用自适应,完全独立的域名,也没有用跨站请求),所以把上面的,验证接口代码,复制粘贴了一份出来。
![](https://img.kancloud.cn/66/e7/66e7efdd714ab519f5b71d774477537a.png)
![](https://img.kancloud.cn/78/ff/78ff3051d8e590be0c80d62f2dc5bdac_1522x781.png)
3.查询的规则发生了好几次变化 , 姓名查询-->手机号码查询 -->手机 +身份证号码 --> 手机 +身份证号码 + 姓名查询。那么,每次调整,都要修改两次。
![](https://img.kancloud.cn/60/ae/60aeee2079c7a09dea5e27964b440bc5_982x416.png)
4.虽然一个需求调整两个地方,也问题不大,但是总感觉怪怪的。要是有5个地方都使用同样的代码,那不是要修改5次?还是得调整程序
```
<pre class="calibre7">```
//接口代码
Public function verify()
{
//获取提交数据
$str = $this->request->get('str');
try{
AgentLogic::verify($str);
return $this->success('查询的信息是正确的');
}catch (\Exception $e) {
//捕捉到 throw new \Exception 后,返回相应的错误信息
return $this->error($e->getMessage());
}
}
//定义的代理类
class AgentLogic
{
public static function verify($str)
{
If(empty($str)) {
//没有输入内容,返回错误信息
throw new \Exception('请输入信息');
}
//到数据库中查询是否有这个验证码
$model = Db::name('agent')->where('name', '=', $str)->find();
If(empty($model)) {
//验证码不存在,反馈错误信息
throw new \Exception('无代理商信息');
}
return true;
}
}
```
5。后面有业务调整的时候,只需要调整AgentLogic 这一个地方就可以了。这样一试,用对象把代码封闭志来,可以减少业务逻辑调整,对项目的影响
![](https://img.kancloud.cn/03/87/03879f37bd3fae622dac5bb88f352cdd_717x471.png)
- 1、面向对象编程
- 写的第一个接口
- 类、对象
- 面象对象之前-面向过程编程
- public、protected、private
- 魔法函数
- 接口
- 依赖注入
- 2、简单工厂
- 现实问题举例
- 现实问题解决办法
- 程序问题举例
- 程序解决办法
- 在THINKPHP6中的应用
- TP6中,把自己写的类放到工厂中去
- tp中app()函数自定义的没提示问题
- 3、外观模式
- 外观模式-现实问题举例
- 外观模式-现实问题解决办法
- 程序问题举例2
- 在THINKPHP6中的影子
- 外观模式--个人感想
- 4、适配器模式
- 现实问题举例3
- 实现场景
- 程序举例
- 5、单例模式
- 现实问题举例4
- 现实问题解决办法4
- 程序举例4
- 改进1
- THINKPHP6中的单例
- TP容器实现的“单例”
- 6、生成器模式
- 举例5
- php代码举例
- 代码分析
- php代码调整
- 再次改进,就是生成器模式了
- 对生成器模式的个人感想
- 7、原型模式
- 模式目地
- 实现举例
- 代码举例
- 浅克与深克
- 8、中介者模式
- 中介者-定义
- 中介者-结构
- 中介者-php代码举例
- 中介者-实际项目的一个例子
- 中介者-实际项目PHP
- 9、代理模式
- 代理模式-现实问题举例
- 代理模式-php代码
- 10、观察者模式
- 小时候煮饭的例子
- 观察者-编程中的问题
- 观察者-php代码举例
- 观察者-thinkphp6中的应用
- 11、命令模式
- 命令模式-定义
- 命令模式-php代码举例
- 命令模式-个人感觉
- 12、迭代器模式
- 迭代器-定义
- 虚构的分享微信美女故事
- 迭代器-php代码举例 - 不想完全公布的问题
- 迭代器-php代码举例 - 解决办法
- 13、组合模式
- 组合模式定义
- 组合模式-实际项目举例
- 组合模式-问题
- 组合模式-如果图片也有这个接口呢
- 真正的组合模式-例子
- 14、模板方法模式
- 模板方法-定义
- 模板方法-现实参考
- 模板方法-项目问题举例
- 模板方法-未用模式的代码
- 模板方法-使用模式的代码
- 15、策略模式
- 策略模式-定义
- 策略-虚构现实案例
- 策略-虚构现实案例PHP代码
- 策略-实际项目举例
- 策略-实际项目举例PHP代码-未使用模式
- 策略-实际项目举例PHP代码-使用模式
- 16、状态模式
- 状态模式定义
- 状态模式-实现案例
- 状态模式-未使用模式
- 状态模式-使用模式
- 17、备忘录模式
- 备忘录模式-定义
- 备忘录-形式图形
- 备忘录-比较真统的php代码
- 备忘录-实际项目想到的例子
- 备忘录-实际例子代码
- 18、享元模式
- 享元模式-定义
- 享元模式-看电影故事
- 享元模式-图形
- 享元模式-看电影PHP代码
- 享元模式-THINKPHP6中的应用
- 19、解释器模式
- 解释器-定义
- abc加减解释器例子
- 解释器-图解算法
- 解释器-三种类型对应的php代码
- 解释器-完整的代码
- 解释器-感觉
- 20、装饰模式
- 装饰模式-定义
- 装饰模式-快餐举例
- 装饰模式-php代码
- 装饰者模式-实际案例
- 21、责任链模式
- 责任链-定义
- 责任链-面试的例子
- 责任链-面试php代码
- 责任链-THINKPHP6中用应用
- 22、桥接模式
- 桥接模式-定义
- 桥接模式-案例举例
- 桥接模式-问题是怎么来的呢
- 桥接模式-使用模式后的代码
- 23、访问者模式
- 访问者-定义
- 访问者-结构关系
- 访问者-php代码举例