工厂、适配器、责任链 设计模式

  设计模式是面向对象程序编程的重要学习内容。设计模式的应用对于面向对象编程来说相当于经验,能够复用代码同时安全可靠。本文介绍工厂模式、策略模式和适配器模式。

       工厂模式包括简单工厂模式,工厂方法模式和抽象工厂模式。

       简单工厂模式:是根据模型或标签(参数)选择生产不同的产品。表现在一个工厂生产多种产品。

       工厂方法模式:是在简单工厂模式上进化而来的。表现在有多个工厂,每个工厂生产一种产品。

       抽象工厂模式:和工厂方法模型类似。但是每个工厂此时生产一类产品,可能包括多种产品。

       看上去像是工厂的进化论,先是简单工厂模式可是生产任何产品,但是未必效率会高。经分治优化而得工厂方法模型,每个工厂只生产一种产品。此时对于工厂等基础设施的利用率不高。抽象工厂方法取得折中,即分类生产提高效率,又避免需要大量的厂房(类)。
 

策略模式:所谓的策略模式书上说用在算法封装等。首先将算法封装成一个抽象类,继承抽象类可以有不同的实现。其他类怎么引用呢?其他类拥有抽象类对象,利用指针、或标签、模板初始化设置不同的算法实现。

       适配器模式:这个要以STL中的deque、stack、queue为例。适配器是利用已有接口封装转化为新的接口。比如对于stack和queue我不需要deque中那么多操作,我只需要pop和push。这时我先用抽象类封装这两个操作,写stack和queue时可以利用已有接口deque,实现功能。在用的时候,只用抽象类代表,初始化stack或者queue来使用。
--------------------- 

责任链设计模式

责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。

在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

通过以下一个场景,以代码的形式进行说明责任链的实现

人物:

员工(Staff):小明、组长(GroupLeader):李磊、课长(Charge):张越、部长(minister):任盈盈、总经理(Manager):令狐冲

职位关系:

员工<组长<课长<部长

情景:

小明刚认识了一个女孩(菜花),想请假找她玩,以增进和她的感情。

请假流程:

请假8小时以内,组长可以决定,超过8小时则需要课长审批,

请假16小时以内,课长可以决定,超过16小时则需要部长审批,

 请假24小时以内,部长可以决定,超过24小时则需要总经理审批,

 请假32小时以内,总经理可以决定,超过32小时审批不通过

猜你喜欢

转载自blog.csdn.net/u010310183/article/details/86138234