PHP 单例 工厂模式 类的重载 抽象 接口

设计模式:
    所谓设计模式,就是解决问题的“常规做法”,是一种认为较好的经验总结
总厂模式
    我们可以设计一个工厂(类),该工厂的作用(任务)就是为人们生产各种对象,这种工厂通常只要指定类名,就可以据此获取一个该类的对象
单例模式:
     应用中的某些需求:
       对于某些类,在使用他们的时候,从头到尾(程序的开始打结束)都只需要一个对象,就可以完成所有任务
       某个类,只允许其创建出一个对象,即使去进行多次创建,也只能得到一个对象
       $obj1 = new A();
       $obj2 = $obj1; //此时还是一个对象,$obk2只是最终指向了跟$obj1同样的对象
       $obj3 = new A();  //现在才有第二个对象
     一个对象还可以使用clone运算符进行克隆,则会生成新对象
抽象类:
     在正常定义类的前年,加上关键字:abstract,那就构成抽象类
     abstract  class  类名{.....类的定义.....}
     抽象类是专门做父类的
抽象方法:
     抽象方法就是一个没有方法体(也不含大括号)的方法定义“头”而已
     前面需加abstract
     比如:abstract  function  f1($x1, $y, $m) ;    //注意,后面一定有分号。
     作用:
        配合抽象类,来实现对下级类的行为规范,相当于要求下级去完成该功能,但自己不做
抽象类抽象方法细节描述:
     1.如果一个方法定义为抽象方法,则其所在的类必须定义为抽象类
     2.子类继承自一个抽象类,则子类必须实现父类中所有的抽象方法,除非子类也继续作为抽象类
PHP中的重载技术:
     1.通常面向对象语言的重载技术
        语法:在一个类中,有多个同名的方法,每个方法的参数不同而已,这种现象就被称为重载
         参数不同可以是:数量个数不同,类型不同,顺序不同
         比如:class A{
                    int function f1(int  x){.....}
                    int function f1(int x, int y){.....}
                    int function f1(string s   int m){.....}
                                          };
        属性重载:
            如果使用一个不存在的属性,就会去自动调用类中预先定义好的某个方法以处理数据
        方法重载
            如果使用一个不存在的方法,就会去自动调用类中预先定义好的某个方法以处理该行为
     2.属性重载
         形式:
            1.取值: $v1 = 对象->属性   //如果属性不存在会调用__get()方法           
            2.赋值: 对象->属性 =xx值   //如果属性不存在会调用__set()方法  
            3.判断是否存在:isset(对象->属性)    //如果属性不存在会调用__isset()方法  
            4.销毁:unset(对象->属性)    //如果属性不存在会调用__unset()方法  
               
     3.方法重载
        当使用一个对象调用一个不存在的普通方法的时候,会自动调用预先定义好的__call方法
        当使用一个对象(类)调用以个不存在的静态方法的时候,会自动调用预先定义好的__callStatic方法
        
     上面几个魔方都称为魔术方法:
         __get(), __set(),  __isset(), __unset(),  __call(),  __callstatic();
接口 interface:
  类:有属性,有方法;有类常量;
  抽象类:有属性,有方法;有类常量;还可以有抽象方法(只有方法头);
  更抽象的类就是接口:有接口常量;还可以有抽象方法(只有方法头);
  接口可以看作是抽象类的更高层面的抽象规范,不考虑接口常量,那就相当于规定了下级类需要做什么
  接口可以实现多继承(多实现) 类不行
  一个类只能继承一个父类,但可以实现多个“上级接口”,语法形式:class  类A  extends  类B  implements  接口1,接口2,.... { 。。。类定义语句。。。}
  一个接口同样可以继承另一个接口(也是单继承):interface  接口1  extends 接口2  {接口定义}

猜你喜欢

转载自www.cnblogs.com/xzz123-/p/9149190.html