-
策略模式,瞎猜想像成,原先有不同的有热水(AD)和冷水(Category)开关的饮水机,里面已经装着不同的饮料(male,或female),想喝那个就去走向那个,开启哪个开关,现在改为,只要一个饮水机(通用),先选择原料包,然后再装入桶里(通用),这样,下次我要另外的口味,只需选择好原料倒进桶里即可,而不用每次喝不同饮料,就增加多一个饮水机
查看全部 -
mysqli
什么是面向对象和面向过程
protated
查看全部 -
面向对象的基本原则
查看全部 -
观察者模式
查看全部 -
3种设计模式
查看全部 -
适配器模式
将不同的方法统一接口方法
查看全部 -
__set($key, $value) 成员属性赋值时,若不存在该成员属性则自动调用
__get($key) 获取成员属性时,若不存在该成员属性则自动调用
__call($func, $patam) 调用方法时,若不存在该方法则自动调用
__callStatic($func, $patam) 调用静态方法时,若不存在该方法则自动调用(此魔术方法也需要声明为静态)
__toString() 当一个类被当成字符串使用时,自动调用
__invoke($param) 当一个类被当成函数使用时,自动调用
查看全部 -
单一职责
可扩展替代修改
低耦合,使用依赖注入
可配置化
面向接口而不关心实现
查看全部 -
什么时候用抽象类,什么时候用接口
>方法的实现的区别
为什么用抽象类,不直接使用普通的基类
>抽象类不能被实例化,该场景也确实不需要实例化,不是不能,对于只是作为被继承的基类的时候,抽象类用起来更优雅一些。
策略模式和观察者模式有什么区别
>其实从理念来讲,都是因“异”而异,策略模式侧重因人而异,选择对应的处理策略,往往是多个策略择其一;观察者模式侧重事件触发时的后续处理,后续处理的逻辑往往需要设计成可以排列组合的。
查看全部 -
// php 链式操作实现原理 // class 普通实现 class DB { function all() { // 在需要链式操作的每个方法后面返回 calss 本身 return $this; } } // __call 和 call_user_func_array 实现 class Foo { function __call($function, $args) { call_user_func_array([$this, $function], $args); return $this; } }
查看全部 -
// spl 标准库常用数据结构 // 栈 $stack = new SplStack(); // 队列 $queue = new SplQueue(); // 最小堆 $minHeap = new SplMinHeap(); // 固定长度数组 $array = new SplFixedArray();
查看全部 -
// php自带函数 自动加载未定义的类 // 在整个php 运行上下文中只许存在一个 __autoload function __autoload($class){ // 引导代码 } // 注册自定义的自动加载函数 // 允许注册多个 spl_autoload_register('divAutoloadFunction');
扩展:
PHP: 类的自动加载查看全部 -
ArrayAccess自动加载配置类
查看全部 -
代理模式:用于数据库的读写分离。
查看全部 -
迭代器模式
类继承implements \Iterator
查看全部
举报