• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

面向对象的三大特性和五大原则是什么

php 搞代码 3年前 (2022-01-21) 13次浏览 已收录 0个评论

面向对象的三大特性

封装,继承,多态

什么是封装?

把客观的事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的类进行信息的隐藏。简单的说就是:封装使对象的设计者与对象的使用者分开,使用者只要知道对象可以做什么就可以了,不需要知道具体是怎么实现的。封装可以有助于提高类和系统的安全性。

什么是继承?

继承指的是建立一个新的派生类,从一个或多个先前定义的类中继承数据和函数,可以重新定义或加进新数据和函数,从而建立了类的层次或等级。

什么是多态?

多态性指的是: 同一操作作用与不同类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,将得到不同的结果。

代码示例

class eat{    public function breakfast()    {        echo "吃早饭!";    }}class typist{    public function type()    {        echo "打字!";    }}function printWorking($obj){    if ($obj instanceof eat) {        echo $obj->breakfast();    } elseif ($obj instanceof typist) {        echo $obj->type();    } else {        echo "error";    }}printWorking(new eat());echo PHP_EOL;printWorking(new typist());

输出:

吃早饭! 打字!

面向对象的五大原则

单一职责原则,开放封闭原则,里氏替换原则,依赖倒置原则,接口隔离原则

什么是单一职责原则?

简单的来说就是: 一个类只做一件事情,不要为类实现过多的功能点,避免相同的职责分散到不同的类中。如果一个类的职责过多可能引起变化的原因也就越多,使代码更加的耦合。如果杂交不清的职责将使得代码难以维护,牵一发而动全身。

例如:工厂模式,工厂模式之所以被称为工厂模式是因为它负责 “生产” 对象。

代码示例

工厂模式的好处:多个地方new了一个对象,当此类名发生改变就不需要一个个去修改,只需要修改一处地方。

<?phpclass MyObject{    public function __construct()    {        echo "test code";    }}//工厂类class MyFactory{    public static function factory()    {        return new MyObject();   }}$instance = MyFactory::factory();//test code

什么是开放封闭原则?

开放封闭原则: 一个类是可扩展的,而不可修改的。也就是说,对扩展开放,对修改封闭。

1.对扩展开放,意味着 有新的需求或变化时,可以对现有的代码进行扩展,以适应新的情况。

2.对修改封闭,在对模块功能进行扩展时,不应该影响已有的程序模块。

实现开放封闭的原则的重点:抽象编程,而不是具体编程,因为抽象相对稳定,让类依赖与固定的抽象类和接口,所以修改就是封闭的。而面向对象的继承和多态机制,又可以继承抽象类或者实现接口,听过重写其方法来改变固有的行为,实现方法新的拓展,所以就是开放。

例如:装饰器模式(Decorator),可以动态地添加修改类的功能。一个类提供了一项功能,如果要在修改并添加额外的功能,传统的编程模式,需要写一个子类去继承它,并重新实现类的方法,使用装饰器模式,仅需在运行时添加一个装饰器

5本文来源gao!daima.com搞$代!码#网#

搞代gaodaima码

对象即可实现,可以实现最大的灵活性。

<?php/** * 输出一个字符串 * 装饰器动态添加功能 * Class EchoText */class EchoText{    protected $decorator = [];    public function Index()    {        //调用装饰器前置操作        $this->beforeEcho();        echo "你好,我是装饰器。";        //调用装饰器后置操作        $this->afterEcho();    }    //增加装饰器    public function addDecorator(Decorator $decorator)    {        $this->decorator[] = $decorator;    }    //执行装饰器前置操作 先进先出原则    protected function beforeEcho()    {        foreach ($this->decorator as $decorator)            $decorator->before();    }    //执行装饰器后置操作 先进后出原则    protected function afterEcho()    {        $tmp = array_reverse($this->decorator);        foreach ($tmp as $decorator)            $decorator->after();    }}/** * 装饰器接口 * Class Decorator */interface Decorator{    public function before();    public function after();}/** * 颜色装饰器实现 * Class ColorDecorator */class ColorDecorator implements Decorator{    protected $color;    public function __construct($color)    {        $this->color = $color;    }    public function before()    {        echo "<dis style='color: {$this->color}'>";    }    public function after()    {        echo "</div>";    }}/** * 字体大小装饰器实现 * Class SizeDecorator */class SizeDecorator implements Decorator{    protected $size;    public function __construct($size)    {        $this->size = $size;    }    public function before()    {        echo "<dis style='font-size: {$this->size}px'>**";    }    public function after()    {        echo "</div>";    }}//实例化输出类$echo = new EchoText();//增加装饰器$echo->addDecorator(new ColorDecorator('red'));//增加装饰器$echo->addDecorator(new SizeDecorator('22'));//输出$echo->Index();

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:面向对象的三大特性和五大原则是什么

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址