面向工具程序设计(Object Oriented Programming,OOP)是一种打算机编程架构。OOP的一条基本原则是打算机程序由单个能够起到子程序浸染的单元或工具组合而成。OOP达到了软件工程的三个紧张目标:重用性、灵巧性和扩展性。OOP=工具+类+继续+多态+,个中核心观点是类和工具。
面向工具设计三大特性:
1、封装
隐蔽工具的属性和实现细节,仅对外供应公共访问办法,将变革隔离,便于利用,提高复用性和安全性。
例如类的设计, new Class();
2、继续
提高代码复用性;继续是多态的条件。
例如:php中用extends关键词
3、多态(两种说法,表达同个意思)
(1)父类或接口定义的引用变量可以指向子类或详细实现类的实例工具。提高了程序的拓展性。
(2)多 态(Polymorphism)按字面上意思理解便是“多种形状”。可以理解为多种表现形式,也即“一个对外接口,多个内部实现方法”。在面向工具的理论 中,多态性的一样平常定义为:同一个操作浸染于不同的类的实例,将产生不同的实行结果。也即不同类的工具收到相同的时,将得到不同的结果。
比较难明得的是多态的实现;
php措辞的实现案例:
abstract class animal{ abstract function cry();}class cat extends animal{ function cry(){ echo "miao~ <br>"; }}class dog extends animal{ function cry(){ echo "wang ~ <br>"; }}function tocry($obj){ if($obj instanceof animal){//通过instanceof来判断是其子类 $obj -> cry(); }else{ echo "no function"; }}tocry(new dog()); tocry(new cat());
interface animal{ public function cry(); } class cat implements animal{ public function cry(){ echo "miao~ <br>"; } } class dog implements animal{ public function cry(){ echo "wang ~ <br>"; } } function tocry(animal $obj){ //通过定义类型判断是其子类,更能表示多态 $obj->cry(); } tocry(new dog()); tocry(new cat());
输出:
wang ~ miao~
上个例子中表示了多态的两个特色
子类重写父类方法父类指向子类抽象类的实现: 上面通过一个关键字instanceof来判断,变量指向的工具是否是animal类的一个实例,下面new cat(),new dog()都是animal子类的工具,解释子类工具是父类的一个实例,从而达到了多态的功能。
实在php的抽象类(abstract)和接口类(interface),都是多态的表示。虽然不如java,go等强类型措辞那么明显。但是也是多态。
五大基本原则:
1、单一职责原则SRP(Single Responsibility Principle) 类的功能要单一,不能包罗万象,跟杂货铺似的。
2、开放封闭原则OCP(Open-Close Principle) 一个模块对付拓展是开放的,对付修恰是封闭的,想要增加功能热烈欢迎,想要修正,哼,一万个不肯意。
3、里式更换原则LSP(the Liskov Substitution Principle LSP) 子类可以更换父类涌如今父类能够涌现的任何地方。比如你能代表你爸去你姥姥家干活。哈哈~~
4、依赖颠倒原则DIP(the Dependency Inversion Principle DIP) 高层次的模块不应该依赖于低层次的模块,他们都该当依赖于抽象。抽象不应该依赖于详细实现,详细实现该当依赖于抽象。便是你出国要说你是中国人,而不能说你是哪个村落庄的。比如说中国人是抽象的,下面有详细的xx省,xx市,xx县。你要依赖的是抽象的中国人,而不是你是xx村落的。
5、接口分离原则ISP(the Interface Segregation Principle ISP) 设计时采取多个与特定客户类有关的接口比采取一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分身分歧的接口,比在一个接口里要好的多。