`

设计模式总结

阅读更多
对于GoF总结的经典的23中设计模式,分为3类:
(1)创建型模式:抽象了对象实例化的过程,用来帮助创建对象的实例的。
(2)结构型模式:描述如何组合类和对象以获得更大的结构。
(3)行为型模式:描述算法和对象间职责的分配

CRM(Customer Relationship management)客户关系管理
CRM的主要含义就是通过对客户详细资料的深入分析,来提高客户满意程度,从而提高企业的竞争力的一种手段。

SCM(Supply chain management)供应链管理
是一种集成的管理思想和方法,它执行供应链中从供应商到最终用户的物流的计划和控制等职能。从单一的企业角度来看,是指企业通过改善上、下游供应链关系,整合和优化供应链中的信息流、物流、资金流,以获得企业的竞争优势。

HRM(human resource management)人力资源管理
目标是让企业HR更好地进行人力资源的发展和规划。系统重点是实现人力资源部门在员工素质管理、薪资管理、绩效考核等方面的需求。

OA(Office automation)办公自动化

单例模式保证只有一个实例,要注意的时,实现时,一定要将单例的构造函数写为私有的,否则外部还是能够构造该实例。

简单工厂的本质就是选择实现,即在工厂内部选择要创建的具体实例。

工厂方法模式定义引人问题:导出不同格式文件对象
定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。

工厂方法的实现中,通常父类会是一个抽象类,里面包含创建所需对象的抽象方法,这些抽象方法就是工厂方法。 事实上,在工厂方法模式里面,应该是Creator中的其它方法在使用工厂方法创建的对象,虽然也可以把工厂方法创建的对象直接提供给Creator外部使用,但工厂方法模式的本意,是由Creator对象内部的方法来使用工厂方法创建的对象,也就是说,工厂方法一般不提供给Creator外部使用。
建议在如下情况中,选用工厂方法模式:
如果一个类需要创建某个接口的对象,但是又不知道具体的实现,这种情况可以选用工厂方法模式,把创建对象的工作延迟到子类去实现
如果一个类本身就希望,由它的子类来创建所需的对象的时候,应该使用工厂方法模式。
工厂方法或简单工厂关注的是单个产品对象的创建,而
抽象工厂要创建一系列的产品对象,而且这些对象是有联系的。如安装电脑时,cpu的引脚和主板引脚要对应,创建cpu和创建主板对象的方法放在同一个具体工厂中。抽象工厂通常实现为接口形式。

策略模式问题引人:客户报价
策略模式定义
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
把所有的计算方式独立出来,每个计算方式做成一个单独的算法类,从而形成一系列的算法,并且为这一系列算法定义一个公共的接口,这些算法实现是同一接口的不同实现,地位是平等的,可以相互替换。
策略模式引入了一个上下文的对象,这个对象负责持有算法,但是不负责决定具体选用哪个算法,把选择算法的功能交给了客户,由客户选择好具体的算法后,设置到上下文对象里面,让上下文对象持有客户选择的算法,当客户通知上下文对象执行功能的时候,上下文对象会去转调具体的算法。这样一来,具体的算法和直接使用算法的客户是分离的。
  具体的算法和使用它的客户分离过后,使得算法可独立于使用它的客户而变化,并且能够动态的切换需要使用的算法,只要客户端动态的选择使用不同的算法,然后设置到上下文对象中去,实际调用的时候,就可以调用到不同的算法。
策略算法是相同行为的不同实现
谁来选择具体的策略算法
在策略模式中,可以在两个地方来进行具体策略的选择。
一个是在客户端,在使用上下文的时候,由客户端来选择具体的策略算法,然后把这个策略算法设置给上下文。前面的示例就是这种情况。
还有一个是客户端不管,由上下文来选择具体的策略算法

装饰模式动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。如java中的输入输出流,可以在输出流上加缓冲修饰等等



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics