• 设计模式一(工厂方法、抽象工厂、单例)


    这2天为了设计模式搞晕了(因为在学校真的用的很少)所以又去把几个设计模式瞄了又瞄,想想每次都要重新敲一遍代码,干脆自己总结总结涨点经验,加深印象.....

    (一)简单工厂模式

    1、实现思维:简单工厂模式是根据提供给他的数据,返回几个可能。类中的实例。通常他返回的是一个共同的父类和共同的方法,但是每个方法执行的任务不同,而且根据不同数据进行了优化。

          2、实例:

      父类:      
                      

    子类1:                                                        子类2:

       

    工厂:

    使用工厂:

    1、 缺点:违反了“开放-封闭原则”。

    2、  

    (二)工厂方法模式

      1、实现思维:没有专门的类来决定所要实例化的子类,将此实现延迟到子类,这种模式实际没有决策点。

      2、实例:

      父类:

    子类1:                                                  子类2:

     

    基类工厂(接口):

    对应子类工厂1:                             对应子类工厂2:

       

    使用:

      3、性能优缺:虽然遵循了“开发-封闭原则”,但是当增加相应的产品时,必须增加一个相应的产品工厂,增大了开发量。

    更换对象时,降低了客户程序与产品对象的耦合。

    (三)抽象工厂模式

       1、实现思维:提供一个创建一系列相关或者是相互依赖的对象接口,而不是需要指定他们具体的类。

       2、实例:(反射机制在抽象工厂的应用)

        反射机制:运行中的程序对自身进行检查(自审),并能直接操作程序的内部属性。

     首先引用

    父类(“工厂”,利用反射来取代工厂):



    子类:

         

    反射机制的体现:

    应用程序配置文件:

    实现:


     

    ()、单例模式

      1、实现思维:确保某个类只有一个实例,而且自行实例化并向整个系统提供此类的实例(全局访问点)。此类成为单例类。(构造函数私有化)

       

      

      2、实例(多线程):

    双重锁定。  以及静态初始化(密封类sealed)。

     

    ①  、静态初始化实现单例类


    ②  、双重锁定实现单例类


    为什么使用2次判断??解决了线程的并发问题,同时避免在每个instance属性方法的调用中出现独占锁定。

     

           使用单例类(客户端实现)(多线程)

          



    能力有限,有错之处望指出,非常感谢!

    本文从百度空间搬家到博客园。

  • 相关阅读:
    php DOC类型注释的用法
    Mysql 数据库更新错误
    Smarty初体验二 获取配置信息
    Smarty 模板初体验
    去网络视频广告方法——虽过时,但效果依然很好(亲测)
    织梦模板修改方法大全
    dede织梦:文章内容页调用
    织梦系统学习:文章页当前位置的写法(自认对SEO有用)
    ZOJ 3229 Shoot the Bullet
    URAL 1277 Cops and Thieves
  • 原文地址:https://www.cnblogs.com/yunanwu/p/4168558.html
Copyright © 2020-2023  润新知