设计模式
-
【设计模式】之装饰器模式
为什么会有装饰模式? 装饰模式是为了解决继承强依赖性和出现大量子类不方便管理问题而出现的。 1. 概述 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。 原理:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直…
-
【设计模式】之单例模式
作为程序员必读经典《重构 改善既有代码的设计》《effective java》两本书,对于提升自己代码的优雅程度确实是非常有帮助。这段事件在学习设计模式,看了《大话设计模式》,虽然这是一本很受非议的一本书,但是每一件事情都是小马过河,不亲自试试怎么知道不适合自己呢。 看过大话设计模式之后,感觉有那么一丝明悟,对于面向对象的理解似乎有那么更近一层的理解,在写优…
-
MVC和MVVM设计模式简单理解
1.mvc设计模式理解 Model: 模型 持有所有的数据状态和业务逻辑; 泛指数据库,链接数据库,建立数据模型 View: 视图 用来展示数据模型在页面上,泛指前端 Controller: 控制器, 接收用户的数据,进行逻辑处理后,传给model. 泛指后端 优点: 模块化 易复用 2.vuex理解 (和本篇无关,只做记录) vuex是为vue程序开发…
-
PHP设计模式——观察者模式
PHP版本 <?php /** * 观察者模式 * 观察者模式能够便利的创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定性功能。 * * 为软件添加由某个动作或状态变化激活的,但是松散耦合的新功能时,应当创建基于观察者模式的对象。 * * SPL:Standard PHP Library PHP标准库 */ class User implem…
-
PHP设计模式——装饰器模式
<?php /** * 装饰器模式 * 如果已有对象的部分内容或功能发生变化,但是不需要修改原始对象的结构,应使用装饰器模式 * * 为了在不修改对象结构的前提下对现有对象的内容或功能稍加修改,应使用装饰器模式 */ class Base{ protected $_content; public function __construct($conten…
-
iOS设计模式 —— KVC
刨根问底KVC KVC 全称 key valued coding 键值编码 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性.JAVA,C#都有这个机制。ObjC也有,所以你根部不必进行任何操作就可以进行属性的动态读写,就是KVC。 KVC的操作方法由NSKeyValueCoding…
-
PHP设计模式——工厂模式
<?php /** * 工厂模式 * 提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类的步骤。 * * 工厂类用于创建不同类的实例,并将其返回。 */ /** * 服务端开始 */ interface DB{ function conn(); } interface Factory{ function createDB(); }…
-
PHP设计模式——单例模式
<?php /** * 单例模式 * 通过提供对自身共享实例的访问,单例模式用于限定特定对象只能被创建一次的情况。 * * 应当阻止创建某个对象的多个实例时,我们最好用单例模式来创建这个对象。 */ class Single{ protected static $_instance = NULL; protected $_handle = NULL; …
-
PHP设计模式——策略模式
<?php /** * 策略模式 * 策略模式帮助构建的对象不必自身包含逻辑,而是能够根据需要利用其他对象中的算法 * * 在能够创建基于对象的,由自包含算法组成的可互换对象时,最佳的做法是使用策略模式 */ interface Math{ function calc($op1,$op2); } class Add implements Math{ p…
-
PHP设计模式——适配器模式
<?php /** * 适配器模式 * 适配器模式是将某个对象的接口适配为另一个对象所期望的接口 * * 在需要转化一个对象的接口用于另一个对象时,最好实现适配器模式对象 */ class Weather { public $_info = NULL; public function __construct() { $this->_info = …