随笔分类 -  面向对象 & 设计模式

摘要:简单描述 外观模式(Facade pattern),为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。 外观模式又称为门面模式,它是一种对象结构型模式,遵循迪米特法则,又称最少知道原则。 模式动机 现代的软件系统都非常复杂,尽管我们已经想尽一切方法将其“分而治之”,把一个系统划分为好 阅读全文
posted @ 2020-06-04 16:08 Ryan_zheng 阅读(654) 评论(0) 推荐(1) 编辑
摘要:简单描述 策略模式(Strategy Pattern)作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 策略模式是一种对象行为型模式。 模式结构 策略模式包含如下 阅读全文
posted @ 2020-04-27 09:00 Ryan_zheng 阅读(601) 评论(0) 推荐(0) 编辑
摘要:简单描述 观察者模式(Observer)是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 当对象的状态发生变化时,所有依赖于它的对象都得到通知并被 阅读全文
posted @ 2020-04-26 22:54 Ryan_zheng 阅读(405) 评论(0) 推荐(0) 编辑
摘要:简单工厂 通过静态方法传入不同的参数创建不同的对象,实现对象创建和使用的分离 <?php class mysql_conn { private $dbh = null; private $host = 'localhost'; private $port = '3306'; private $use 阅读全文
posted @ 2020-04-26 22:53 Ryan_zheng 阅读(2870) 评论(0) 推荐(0) 编辑
摘要:单例模式(Singleton Pattern):顾名思义,就是只有一个实例。作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 为什么要使用单例模式 1、PHP语言本身的局限性 PHP语言是一种解释型的脚本语言,这种运行机制使得每个PHP页面被解释执行后, 阅读全文
posted @ 2020-04-26 22:52 Ryan_zheng 阅读(400) 评论(0) 推荐(0) 编辑
摘要:对象继承 继承已为大家所熟知的一个程序设计特性,PHP 的对象模型也使用了继承。继承将会影响到类与类,对象与对象之间的关系。 比如,当扩展一个类,子类就会继承父类所有公有的和受保护的方法。除非子类覆盖了父类的方法,被继承的方法都会保留其原有功能。 继承对于功能的设计和抽象是非常有用的,而且对于类似的 阅读全文
posted @ 2019-08-24 22:02 Ryan_zheng 阅读(190) 评论(0) 推荐(0) 编辑
摘要:构造函数 __construct ([ mixed $args [, $... ]] ) : void PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。 Note: 如果子类中定义了构造函数则不会 阅读全文
posted @ 2019-08-24 22:00 Ryan_zheng 阅读(263) 评论(0) 推荐(0) 编辑
摘要:范围解析操作符 (::) 范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。 当在类定义之外引用到这些项目时,要使用类名。 自 PHP 5.3.0 起,可以通过变量来引用类,该变量的值不能是关键 阅读全文
posted @ 2019-08-24 19:07 Ryan_zheng 阅读(726) 评论(0) 推荐(0) 编辑
摘要:类的自动加载 (Autoloading Classes) 在编写面向对象(OOP) 程序时,很多开发者为每个类新建一个 PHP 文件。 这会带来一个烦恼:每个脚本的开头,都需要包含(include)一个长长的列表(每个类都有个文件)。 在 PHP 5 中,已经不再需要这样了。 spl_autoloa 阅读全文
posted @ 2019-08-24 16:39 Ryan_zheng 阅读(585) 评论(0) 推荐(0) 编辑
摘要:类常量 (Class Constants) 可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。 常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。 接口(interface)中也可以定义常量。更多示例见文档中的接口部分。 自 PHP 5.3.0 阅读全文
posted @ 2019-08-24 15:44 Ryan_zheng 阅读(565) 评论(0) 推荐(0) 编辑
摘要:属性 (Properties) 类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 public,protected或者 private 开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指 PHP 脚本 阅读全文
posted @ 2019-08-24 15:29 Ryan_zheng 阅读(927) 评论(0) 推荐(0) 编辑
摘要:对象接口 (interface) 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。 接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。 接口中定义的所有方法都必须是公有,这是接口的特性。 实现(im 阅读全文
posted @ 2019-08-24 15:05 Ryan_zheng 阅读(363) 评论(0) 推荐(0) 编辑
摘要:一、重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。这样才能通过传递不同的参数来决定到底调用哪一个。 值得注意的是,方法重载只有通过参数不同来判断调用哪个方法,而不能通过返回值。至于原因,可以这样理解,你调用一个方法,如果有多个方法同名,系统必须要知道到底你要 阅读全文
posted @ 2019-06-21 18:41 Ryan_zheng 阅读(1072) 评论(0) 推荐(0) 编辑
摘要:上面的代码会打印“A”。 C++ 类指针定义的时候没有初始化的时候,居然可以安全的调用类内部的成员函数而不出错。 在网上查了一下: 初始化为NULL的类指针可以安全的调用不涉及类成员变量的类成员函数而不出错,但是如果类成员函数中调用了类成员变量则会出错,既然赋值为NULL的情况都可以使用,那么自然不 阅读全文
posted @ 2018-02-18 13:03 Ryan_zheng 阅读(11342) 评论(0) 推荐(0) 编辑
摘要:对象模型的重点在类和对象; 在OOP中,重点是做什么,而不是如何做; 对象包括状态和行为; 对象互相通信以解决问题; 数据抽象、封装和继承是对象模型的强大范式,它不是如何语言的特性; 支持抽象、封装和继承的语言就是面向对象编程语言; 必须通过仔细分析问题、良好的设计和高效的实现,才能发挥对象模型的优 阅读全文
posted @ 2018-02-17 16:39 Ryan_zheng 阅读(136) 评论(0) 推荐(0) 编辑