设计模式基础(一)
2017-05-24 12:19
127 查看
设计模式的宗旨就是:重用。
在面向对象中,类是用于生成对象的代码模版,而设计模式是用于解决共性问题的代码模版。
遵循这样的模板,我们可以设快速地设计出优秀的代码。
注意,设计模式只是模板,不是具体的代码。
它是为了代码复用,增加可维护性。
在学习设计模式的时候,有几个概念让我很难接受,这可能是从过程式编程转到面向对象编程的禁锢。
假设有这样一个对象:
不要觉得变量只能保存整形数字,数组和字符串,变量还可以保存对象的:
如果另一个类用到了Person类的属性或方法,那直接穿进去就可以了:
但是这样有一个小问题,当传递给
程序就会报错。于是有了第三种做法,限定参数的类型。
在传递参数的时候,就限定参数的类型,这样写:
这样,传给
还有一种经常用到的做法,就是用一个类的属性保存对象或对象集合。如下:
输出值:
面向对象的设计模式都是围绕上面的情形,做一些组合之后形成的。
所以,理解类之间关系才是重点。
互联网+时代,时刻要保持学习,携手千锋PHP,Dream
It Possible。
在面向对象中,类是用于生成对象的代码模版,而设计模式是用于解决共性问题的代码模版。
遵循这样的模板,我们可以设快速地设计出优秀的代码。
注意,设计模式只是模板,不是具体的代码。
它是为了代码复用,增加可维护性。
在学习设计模式的时候,有几个概念让我很难接受,这可能是从过程式编程转到面向对象编程的禁锢。
假设有这样一个对象:
class Person { private $name = 'Human'; public function getName() { return $this->name; } }
1 变量保存对象
不要觉得变量只能保存整形数字,数组和字符串,变量还可以保存对象的:$man = new Person; echo $man->getName();
2 传递对象参数
如果另一个类用到了Person类的属性或方法,那直接穿进去就可以了:class Student { public function __construct($person) { echo $person->getName(); } } // 传递对象,最后输出字符串“Human” $jack = new Student(new Person);
但是这样有一个小问题,当传递给
new Student()不是一个
Person对象时,如下,
$jack = new Student('abc');
程序就会报错。于是有了第三种做法,限定参数的类型。
3 限定传递参数的类型
在传递参数的时候,就限定参数的类型,这样写:class Student { public function __construct(Person $person) { echo $person->getName(); } } // 传递对象, $jack = new Student(new Person);
这样,传给
new Student()的参数必须是
Person的实例。
4 用类属性保存对象
还有一种经常用到的做法,就是用一个类的属性保存对象或对象集合。如下:class Life { public $persons = []; public function addPerson(Person $person) { $this->persons[] = $person; } } $class = new Life(); $class->addPerson(new Person); $class->addPerson(new Person); var_dump($class->persons);
输出值:
array(2) { [0]=> object(Person)#2 (1) { ["name":"Person":private]=> string(5) "Human" } [1]=> object(Person)#3 (1) { ["name":"Person":private]=> string(5) "Human" } }
5 小结
面向对象的设计模式都是围绕上面的情形,做一些组合之后形成的。所以,理解类之间关系才是重点。
互联网+时代,时刻要保持学习,携手千锋PHP,Dream
It Possible。
相关文章推荐
- 好书整理系列之-设计模式:可复用面向对象软件的基础 6
- 好书系列之-设计模式:可复用面向对象软件的基础 1
- 好书整理系列之-设计模式:可复用面向对象软件的基础 3
- 好书整理系列之-设计模式:可复用面向对象软件的基础 7
- 好书整理系列之-设计模式:可复用面向对象软件的基础 6
- 好书整理系列之-设计模式:可复用面向对象软件的基础 5.5
- 为UML争吵没有意思,还是把基础打好,看"学习GoF设计模式的重要性"!
- 好书整理系列之-设计模式:可复用面向对象软件的基础 5.5
- 好书系列之-设计模式:可复用面向对象软件的基础 1
- 好书整理系列之-设计模式:可复用面向对象软件的基础 9
- 好书整理系列之-设计模式:可复用面向对象软件的基础 2
- 好书整理系列之-设计模式:可复用面向对象软件的基础 8
- 借书20041102_《设计模式:可复用的面向对象软件的基础》《微软项目:求生法则》
- 好书整理系列之-设计模式:可复用面向对象软件的基础 2
- 设计模式基础
- 好书整理系列之-设计模式:可复用面向对象软件的基础 3
- 好书整理系列之-设计模式:可复用面向对象软件的基础 5
- 好书整理系列之-设计模式:可复用面向对象软件的基础 9
- 好书整理系列之-设计模式:可复用面向对象软件的基础 5
- 好书整理系列之-设计模式:可复用面向对象软件的基础 5