简单工厂模式:由一个工厂对象决定创建出哪一种产品类的实例
简单工厂模式中包含的角色及其相应的职责如下:
工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,创建所需要的产品对象。
抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。
找到的一些博客中介绍较好的链接:
http://blog.csdn.net/weiwenlongll/article/details/6918164http://dxwang.blog.51cto.com/384651/139569/
http://hanzhengyang0126.blog.163.com/blog/static/117503945200981791247203/
策略模式(strategy):它定义了算法家族,,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合;策略模式的优点是简化了但愿测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。
策略模式就是用来封装算法的,但在实践中,我们发现可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就应该考虑使用策略模式处理这种变化的可能性。
装饰模式(decorator),动态地给一个对象添加一些额外的职责,就增加功能来说装饰模式比生成子类更为灵活。
装饰模式是为已有功能动态地添加更多功能的一种方式,当系统需要更新功能的时候,是像旧的类中添加新的代码。这些新加的代码通常装饰了原有类的核心职责或主要行为。
装饰模式的优点:把类中的装饰功能从类中搬移去除,这样可以简化原有的类;有效地把雷的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑。
代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问。
代理模式应用场合 一 、远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地质空间的事实。二、虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真是对象。三、安全代理。用来控制真是对象访问时的权限。四、只能指引,是指调用真实的对象时,代理处理另外一些事。
工厂方法模式(factory method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类实例化延迟到其子类。
工厂模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码类进行。
原型模式(prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
“浅复制”,被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。
“深复制“把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。
一般在初始化的信息不发生变化的情况下,克隆是最好的办法,这既隐藏了对象创建的细节,又对性能是大大的提高。
当我们要完成在某一个细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板模式来处理。
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。