zoukankan      html  css  js  c++  java
  • 工厂模式

    描述:

    工厂模式也是属于创建型的设计模式,它的职责非常的明确,就是负责创建产品,也就是专门负责对象的创建,因此叫做工厂,在工厂模式中主要分为以下几种。
    1)简单工厂
       就是负责对象的创建,但是当产品不固定的情况下,简单工厂就不能满足需求,也就是工厂类会随着对象的增多而不停的修改,违背开闭原则。
    2)工厂方法
       工厂方法的目的就是为了解决上述的问题而提供的,它将工厂划分更加的精细,也就是每一种产品就对应一种工厂。
    3)抽象工厂
       工厂方法很好的解决了开闭原则,但是,随之的另一个问题也产生了。当需要的产品不是一个类型的时候,这时工厂方法就无法解决这类的问题,随之又横生出了抽象工厂。抽象工厂的目的就是为了解决产品族的问题。(同一系列不同类型的产品)
    4)万能工厂
       简单工厂+反射=万能工厂

    5)容器工厂
    容器工厂是在万能工厂之上的一种升华,它会预先初始化好需要管理的对象,并且这些对象是可复用的。

    描述:

    在开发的过程中,通常有些业务会有多种实现方式,而且在程序运行时,会根据当前的业务场景选择合适的实现,这种情况就适合使用策略模式。策略模式的特点就在于“多选一”的情况。

    策略模式中有一个重点就是:策略上下文,这个上下文其实就是已含了一个简单的工厂,根据用户的要求创建不同的实现类实例,并且把实现类的具体行为进行封装。因此客户端在调用的时候只面对这个上下文,而不需要知道具体那些策略在执行。

    注意:策略模式中隐藏一个简单工厂

    描述:

    责任链模式是一种线性的执行流程,多个对象都有机会去执行同一个任务,只是在执行过程中,由于执行的权利和范围不一样,那么当自己不能处理此任务时,就必须将这个任务抛给下一个执行者,以此类推,就形成了一个执行链。
    典型的例子就是Tomcat中的过滤器,当配置了多个过滤器时,就会形成一个过滤连,客户端发起的请求会经过这个过滤连上的每一个过滤器,但最终只有一个过滤器去处理这个请求。

    纯与不纯的责任链:
    1)纯的责任链是在整个链条中,只有一个对象可以去处理这个任务,而不是某个对象处理了一半,然后交给下一个执行者。
    2)纯的责任链中必须有一个对象去处理这个任务或请求,不i出现链中没有对象处理此任务或请求的情况。
     
    总结:通常在实际的开发场景中,多数都会出现不纯的责任链模型。其实这也是责任链模型的一种改变,为了迎合业务需求。不纯的责任链并不是说违反了这个设计模式和原则。

    描述:
    当一个任务被抽象分解成多个有序的子任务或步骤时,这种场景就适合使用模板方法模式,模板方法利用了继承的优点而产生的。并且每个子任务或步骤的实现方式不一样,他们被延迟到子类中去实现。但是在父类中有一个行为去统筹这些子任务或步骤的执行顺序,而这个行为就是模板方法。
     
    特点:
    1)多个子任务有序的执行
    2)子任务在子类中有不同的具体实现
    3)在父类中提供统一执行的方法
     
    钩子方法:
    如果某些子类在执行的过程不需要制定一些特定的步骤,那么钩子方法就是用于解决这个问题。

  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/BruningHUA/p/6221386.html
Copyright © 2011-2022 走看看