• 面相对象设计模式


      设计模式总共有23种,最有代表性的两种是:单例模式和工厂模式。

      单例模式:

        目的:让一个类只能生成一个对象。

        步骤:

          1.将构造函数做成私有的;

          2.在类里面做一个函数造对象;

          3.在方法里面加限制条件。

    class Ren{
        public static $r;
        public $name;
        private function __construct(){
            
        }
        public static function duixiang(){
            if(empty(Ren::$r)){
                Ren::$r = new Ren();   //不用类名可以用self
            }
            return Ren::$r;
        }
    }
    $r = Ren::duixiang();
    $r->name = "张三";
    var_dump($r);

      工厂模式:

        目的:做一个专门造对象的工厂。

    class Suan{
        public $a;
        public $b;
        public function yunsuan(){
        
        }
    }
    class Jia extends Suan{
        public function yunsuan(){
            return $this->a+$this->b;
        }
    }
    class Jian extends Suan{
        public function yunsuan(){
            return $this->a-$this->b;
        }
    }
    class Gongchang{
        public static function duixiang($ysf){
            switch($ysf){
                case "+":
                return new Jia();
                break;
                case "-":
                return new Jian();
                break;
            }
        }
    }
    $j = Gongchang::duixiang("+");  //只需要给出指定的符号即可输出
    $j->a = 10;
    $j->b = 5;
    echo $j->yunsuan();

      OOP表示面向对象,基本上有6大原则,而实际上都是互补的,也就是说一些原则需要利用另一些原则来实现自己:

        1. Open-Close Principle(OCP),开-闭原则:设计要对扩展有好的支持,而对修改要严格限制;

        2.Liskov Substituition Principle(LSP),里氏代换原则:子类必须能够替换基类,否则不应当设计为其子类。”也就是说,子类只能去扩展基类,而不是隐藏或覆盖基类;

        3.Dependence Inversion Principle(DIP),依赖倒换原则:设计要依赖于抽象而不是具体化,设计的时候我们要用抽象来思考,而不是一上来就开始划分我需要哪些哪些类,因为这些是具体;

        4.Interface Segregation Principle(ISP),接口隔离原则:将大的接口打散成多个小接口,使多个接口分担这个大接口的功能;

        5.单一职责:一个类的功能尽量单一,降低耦合;

        6.Law of Demeter  or  Least Knowlegde Principle(LoD or LKP),迪米特法则或最少知识原则:一个对象应当尽可能少的去了解其他对象。

  • 相关阅读:
    android webview内存泄露解决方法
    使用adb安装遇到的一些坑
    androidstudio在创建new project时,窗口太大,看不到下面确定按钮的解决方法
    android切换前后台状态监听
    android设置系统横屏方案
    android判断adb调试是否打开及代码跳转到开发者选项界面
    xml布局解析报错的可能原因
    Android:防止过快点击造成多次事件 问题
    android Information:Gradle tasks [:dl_version:generateDebugSources, :dl_version:generateDebugAndroidTestSources导致无法实现Preview功能
    Android定位服务关闭和定位(悬浮)等权限拒绝的判断
  • 原文地址:https://www.cnblogs.com/maoqiaoyu123/p/8267111.html
Copyright © 2020-2023  润新知