设计模式
dragon-114
这个作者很懒,什么都没留下…
展开
-
设计模式之3大工厂模式
设计模式6大原则 1、简单工厂模式:(静态工厂方法) 简单工厂模式有唯一的工厂类,工厂类的创建方法根据传入的参数做if-else条件判断,决定最终创建什么样的产品对象。 调用者不知道具体子类名称,只知道具体参数,根据不同参数传进父类从而调用子类 缺点: a、增加新的产品需求修改工厂类的判断逻辑,增加if else判断条件,与开闭原则相违背(开闭原则:多扩展开发,对修改关闭) b、工厂类一单出错,整个系统都要报错 2、工厂方法模式: 工厂方法模式由多个工厂类实现工厂接...原创 2021-04-25 20:45:23 · 142 阅读 · 0 评论 -
设计模式之facade门面模式
facade门面模式 概念:又叫外观模式,为子系统中的接口或方法提供一个统一的界面,供外部访问,门面模式定义了一个高层接口,使得子系统更加容易使用,引入门面之后,用户只需与门面角色交互,不用管子系统内的复杂关系,从而降低了耦合度 例:laravel中的路由:Route::get();route类中根本查不到get方法,其实就是使用了门面模式 有一个DB类,外加一个DBFacade类,只需调用门面类就可实现与数据库的交互 __call...原创 2021-04-25 20:42:45 · 96 阅读 · 0 评论 -
设计模式之AOP切面模式
AOP切面模式 概念:切面是指类的一个实例方法,也就是说我们只要在类的一个实例方法执行前或后面挂载前置或后置方法(tp的钩子函数), 主要是为了切分和扩展相应方法的功能,而不需要在原始方法里面改动。 例:主业务流程:下订单 次业务流程:订单前:校验输入信息,校验用户权限 订单后:添加积分 将次业务逻辑分散到各个扩展中,订单前后的操作可以看做是不同的切面,这些切面和主业务逻辑交叉在一起,但又不...原创 2021-04-25 20:42:14 · 435 阅读 · 0 评论 -
设计模式之建造者模式
概念:通过建造者接口可以将一个复杂对象的构建过程与对象的表现相分离,使同样的构建过程可以创建出不同的表现。 例子: 摩拜工厂(框架、轮胎、gps)、 ofo工厂(框架、轮胎、gps),用户通过调用建造者封装一个方法调用(框架、轮胎、gps)方法生产自行车,用户在调用获取方法获取生产好的自行车。 我们可以试着将车的组装和零部件生产分离开来:让一个类似“导演”的角色负责车子组装,而具体造什么样的车需要什么样的零部件让具体的“构造者”去实现,“导演”知道什么样的车怎么造,需要的零部件则让“构造者”..原创 2021-04-25 20:41:18 · 85 阅读 · 0 评论 -
设计模式之装饰器模式
概念:通过装饰器可以动态的给某个对象添加属性的功能 例:奶茶,可以选择珍珠奶茶,咖啡奶茶,柠檬奶茶等。每一个都是一个类,继承自装饰器类 茶基类, 奶茶类,抽象装饰类继承自茶基类,珍珠类继承装饰器,咖啡类继承装饰器,通过构造注入的方式给奶茶类添加不同的品味。 <?php //抽象类 abstract class Tea { private $description = 'unknown Tea'; public abstract function getDescription();.原创 2021-04-25 20:39:30 · 36 阅读 · 0 评论 -
设计模式之适配器模式
概念: 为了将已存在的接口转换成适合我们现在新的需要的接口,现实生活中,适配器是作为一个中间层来实现这种转换作用,比如电源适配器。 作用:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作。 例: 为玩具狗,玩具猫的张嘴和闭嘴两个功能,新能遥控张嘴闭嘴功能,这时可以新增一个新的适配器调用之前的两个动作,而不用改变之前的动作 <?php //适配器也相当于构造注入方法 interface Bird { public fun...原创 2021-04-25 20:37:42 · 46 阅读 · 0 评论 -
设计模式之观察者模式
概念: 观察者模式有时也被称作发布/订阅模式,该模式用于为对象实现发布/订阅功能:一旦主体对象状态发生改变,与之关联的观察者对象会收到通知,并进行相应操作。 思路:将所有观察者注册到被观察者的列表中,当被观察者接收到消息之后,循环调用列表通知给每个观察者。 <?php /** * 被观察者接口类 */ interface Observerable { //注册观察者 public function registerObserver(Observer $o); //移除观察者 pub.原创 2021-04-25 20:35:36 · 39 阅读 · 0 评论