zoukankan      html  css  js  c++  java
  • 设计模式-创建型模式

    创建型模式 第一,它们都将系统使用哪些具体类的信息封装起来;第二,它们隐藏了这些类的实例是如何被创建和组织的。
        单例模式。
            场景。只能有一个实例时的解决方法
        抽象工厂模式。
            场景。需要创建一系列对象的情况,同时,需求改动时,可能需要创建更多对象。如数据库变动,就需要改所有创建包含查询语句的对象。
            解决方法。提供个接口,这接口可创建一系列相关或相互依赖的对象,客户端不用管是接口的实现类使用哪个数据库OOP的精华:面向接口编程
        建造者模式。
            场景。整体由部分按一定方式构成,部分变化会影响构成整体的原方式。如盖楼的步骤一样,各部分材料不同,材料的变化,不会改变盖楼的步骤。
            解决方法。把构建整体的方式,与每部分分离开,每部分的变化,不影响构成方式的变化。
        简单工厂模式,十分常用。
            场景。一个类的创建代码,如果分散在调用的位置,就会有很多相同的创建代码,修改创建代码,需要改很多处;同时,如果多个相似的子类的创建代码,分散在很多位置,加剧了上述相同;另外,采用子类而不是方法代表不同,方便了扩展,扩展时只需添加子类即可,不用为了加方法而改原类。
            解决方法。容易变化的用类来实现,代替方法,类的上级可以是普通父类,也可以是接口或抽象类;用工厂类决定创建哪种子类,只需传入参数即可。带来问题是,如果变化太多,用于实现的类会很多,这时,最好使用原型模式,找到各实现类不用的局部点。
        工厂模式
            场景。用简单工厂模式时,加功能时,因创建实例的逻辑在工厂类里,需要改工厂类,违背了修改关闭原则。
            解决办法。把简单工厂的内部逻辑,移到客户端代码,避免改工厂类。定义一个接口,
        原型模式
            场景。用简单工厂模式时,新的实现类只改变了一点,但还是要重写一个类,导致了大部分代码相同的实现类很多,改一处,需要改很多实现类。
            解决办法。用memberwiseclone方法复制对象,并调用系统方法,实现深拷贝。不同处设值。
  • 相关阅读:
    [转]解密回声消除技术之二(应用篇)
    [转]解密回声消除技术之一(理论篇)
    Linux命令练级初级
    [转]win7+ubuntu 13.04双系统安装方法
    c/c++常用代码--清空目录
    c++程序开发利器
    vc2005 编译ACE-6.2.0
    Facebook Login api
    IIS7.0 下使用Intelligencia.UrlRewriter时Session为空问题
    无后缀名伪静态路径在IIS7.0的网站提示 "404
  • 原文地址:https://www.cnblogs.com/yinlg/p/4989419.html
Copyright © 2011-2022 走看看