大谈设计模式及单例模式代码

来源:互联网 发布:share.js用法 编辑:程序博客网 时间:2024/06/08 15:23

设计模式概述

设计模式是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被人理解,保证代码可靠性,毫无疑问,设计模式于己与他人系统都是多赢的设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖头一样。

模式的经典定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这宗方式,我们可以无数次地重用那些已有的解决方案,无需在重复相同的工作,即模式在特定的环境中解决问题的一种方案。

现在有两排,有的人建议使用设计模式,有的人不建议使用设计,模式

高内聚、低耦合

类里面的聚合程度要非常的高

类与类之间的关系要尽量的减少

1、单例

这个类只能创建一个对象。

php的应用主要在于数据库应用,一个应用中会存在大量的数据库操作,使用单例模式可以避免大量的new操作销毫的资源

步骤:1、构造函数需要标记为private2、保存类实例的静态成员变量3、获取实例的公共的静态方法

2、工厂

接口中定义一些方法

实现接口的类实现这些方法

工厂类:用于实例化对象

优点:为系统结构提供了灵活的动态扩展机制,方便维护

3、工厂方法

工厂方法模式核心就是工厂类不在负责所有对象的创建,而是将具体创建的工作交给子类去做,成为了一个抽象工厂角色,他仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节

4、观察者

他是一种事件系统,意味着这一模式允许某个类观察另一个类的状态,当被观察者的类的状态发生改变的时候,观察类可以收到通知并且做出相应的动作,观察者模式提供了避免组件之间紧密耦合的另一种方法

5、适配器

生活中就有很多适配器,电源适配器,就是里面的变压器  220v

可将一个类的接口转换何曾客户希望的另外一个接口,使得原来不兼容的接口能够一起工作,通俗的理解就是将不同接口适配成统一的接口

6、策略模式

1、多个类之区别在表现行为不同,可以使用strategy模式,在运行时动态选择要执行的行为

2、需要在不同情况下使用不同的策略,或者策略还可能在未来用其他方式来实现

3、对客户隐藏具体策略的实现细节,彼此完全独立

7、门面模式

1、他对客户屏蔽了子系统组件,因而减少了客户处理的对象的数目并使得使用起来更加方便

2、实现了子系统与客户之间的松耦合关系

3、如果应用需要,他并不限制他们使用子系统类,异常可以在系统易用性之间加以选择

适用场景

1、为一些负责的子系统提供一组接口

2、提高子系统的独立性

3、在层次化结构中,可以使用门面模式定义系统的每一层的接口

8、DI依赖注入 其实就是参数传递

减少类和类之间联系

单例模式代码:

<?phpclass Dog{private function __construct(){}//构造方法私有化//静态属性保存单例对象static private $instance;//通过静态方法来创建单例对象static public function getInstance(){//判断$instance是否为空,如果为空则创建一个对象,如果不为空则直接返回if(!self::$instance){self::$instance=new self();}return self::$instance;//静态属性用self::来调用}}/*$dog1=new Dog();$dog2=new Dog();*/$dog1=Dog::getInstance();$dog2=Dog::getinstance();if($dog1===$dog2){echo '这是同一个对象';}else{echo '这是两个不同的对象';}?>


原创粉丝点击