工厂模式

描述:

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

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

描述:

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

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

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

描述:

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

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

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

原文地址:https://www.cnblogs.com/BruningHUA/p/6221386.html