• 设计模式学习(三)单件模式生成器模式


      单件模式

    某种程度上,单件模式是限制而不是改进类的创建,但它仍属于创建模式。单件模式可以保证一个类有且只有一个实例,并且提供一个访问它的全局访问点。在程序设计过程中,有很多情况需要确保一个类只能有一个实例。例如:任务管理器,打印机COM1 端口等。

    使用静态变量实现单件模式,设计特殊的异常类,当单件实例已经存在的时候,抛出异常。

    提供一个单件的全局访问点:

    1 在程序的开头创建单件,并将其作为参数传递到需要使用它的类中。

    2 在程序中创建一个所有单件类的注册表,并使注册表始终可用。 每次实例化一个单件,都将其记录在注册表中。程序的任何部分都能使用标识符串访问任何一个单件实例,并能取回相应的实例变量。

    提供一个全局访问点的最常用的方式是使用类的静态方法,类名始终是可以用的,静态方法只能由类来调用,不能由类的实例调用。

    生成器模式

    适用场景:由于显示数据的不同而完全不同的用户界面,例如:E-mail地址簿,既有个人信息也有组的信息。

    理解:根据数据的不同,显示数据的界面由特定的类来动态生成和显示。

    对于报表系统应该可以使用生成器模式来设计,根据不同的报表类型,来显示不同的数据和格式,需要一个判断生成类,一个各个报表相同属性的类,一个接受页面,多个不同报表的生成类。

    其实,生成器模式有点像页面工厂,专门根据不同数据生成不同的页面部件。

    生成器模式的效果:

    1 生成器允许读者改变产品的内部表示,同时也隐藏了产品如何组装的细节。

    2 每个特定的生成器都独立于其他的生成器,同时独立于程序的其他部分,这一点提高了对象的模块性,并使添加其他的生成器变得相对简单。

    3 由于每个生成器是根据数据一步一步构建最终结果的,所以能精确的控制生成器构建的每一个结果。

    生成器模式有点类似于抽象工厂模式,两者都返回由许多方法和对象组成的类。他们之间的主要差别是:抽象工厂返回的是一系列相关的类,而生成器是根据提供给他的数据一步一步的构建一个复杂的对象。

    理解:抽象工厂模式一次返回一系列复杂的相关类,生成器模式则是一步一步的判断数据,一步一步地生成一个复杂的对象。一个并不需要实际的数据,一个需要实际数据,依赖于实际数据来生成。
  • 相关阅读:
    Jboss/Wildfly安装配置
    Ubuntu上安装谷歌第二代机器学习系统TensorFlow
    (转)Apache重写规则的常见应用(rewrite)
    (转)Apache Rewrite 详解
    (转)Apache Rewrite 详解
    Jetty安装配置
    linux命令crontab
    php使用CI发送qq和163邮件
    php时间类
    phpcurl类
  • 原文地址:https://www.cnblogs.com/xh831213/p/870832.html
Copyright © 2020-2023  润新知