随笔分类 -  design pattern

设计模式的个人总结
设计模式17:单例模式
摘要:单例模式就是说系统中对于某类的只能有一个对象,不可能出来第二个。 static修饰的方法,不能再用abstract修饰,也不能Override。这是因为static方法是属于类的,不会被继承。 最基本的单例模式不是线程安全的,当有多个线程同时getInstance时,有可能实例化了多个对象。 下面比 阅读全文

posted @ 2017-04-16 20:29 一个后端狗 阅读(212) 评论(0) 推荐(0)

设计模式16:迭代器模式
摘要:泛型相关请参考:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html uml: Aggregate及其子类: Iterator及其子类: Demo: 阅读全文

posted @ 2017-04-16 19:18 一个后端狗 阅读(165) 评论(0) 推荐(0)

设计模式15:组合模式
摘要:组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 透明方式与安全方式: 透明方式: 父类包含所有子类的方法,不需要该方法的 阅读全文

posted @ 2017-04-16 16:28 一个后端狗 阅读(884) 评论(0) 推荐(0)

设计模式14:备忘录模式
摘要:备忘录模式适用于功能比较复杂的,但需要维护或者记录属性的类,对象可以根据备忘录回滚到上一状态。 所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 客户不与备忘录类耦合,与备忘录管理类耦合。 uml: 代码: 阅读全文

posted @ 2017-04-16 15:43 一个后端狗 阅读(224) 评论(0) 推荐(0)

设计模式13:适配器模式
摘要:适配器模式将一个类的接口转换为客户希望的另外一个接口。Adapter使得那些由于接口不一致而无法一起工作的类有了一起工作的机会。 双方都不太容易修改时,再用适配器。 适当的考虑是否应该使用适配器和重构。 uml 代码: 父类: 待适配的类: DEMO 阅读全文

posted @ 2017-04-13 15:57 一个后端狗 阅读(122) 评论(0) 推荐(0)

设计模式12:状态模式
摘要:状态模式解决的是控制一个对象状态转移的表达式过于复杂的情况,把状态的判断逻辑转移表示到不同状态的一系列类中,可以把复杂的逻辑简化。 状态模式的好处是将特定状态的行为局部化,从而将不同状态的行为分割开来。 将特定状态的行为都放入一个对象中,由于与状态有关的代码都存在在具体的对象类中,因此定义新的子类可 阅读全文

posted @ 2017-04-13 11:24 一个后端狗 阅读(262) 评论(0) 推荐(0)

设计模式11:抽象工厂模式
摘要:阅读材料:http://baike.xsoftlab.net/view/209.html#3_2 抽象工程模式解决的问题: 当前有一套产品,称为A;另一套产品称为B。客户端代码需要在两套产品中切换。 抽象工厂模式相当于在简单工厂模式之上又抽象了一层,使得客户端代码在两套产品切换中比较方便。 但是抽象 阅读全文

posted @ 2017-04-12 20:09 一个后端狗 阅读(235) 评论(0) 推荐(0)

设计模式10:观察者模式
摘要:观察者模式所做的事情就是在解耦合,让耦合的双方都依赖于抽象,而不是依赖于具体。 这样各自的变化不会影响另一边的变化。 uml: 代码: 通知者: 观察者: DEMO: 阅读全文

posted @ 2017-04-12 16:57 一个后端狗 阅读(158) 评论(0) 推荐(0)

设计模式9:建造者模式
摘要:建造者模式用来将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。 UML图: 阅读全文

posted @ 2017-04-10 19:30 一个后端狗 阅读(199) 评论(0) 推荐(0)

设计模式8:外观模式
摘要:外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 使用: 1、客户 阅读全文

posted @ 2017-04-09 11:53 一个后端狗 阅读(198) 评论(0) 推荐(0)

设计模式7:模板方法模式
摘要:有时候,我们需要定义某个方法,这个方法在高层次来看是相同的,但是里面几个具体步骤有可能有些不同。 一种实现方法是父类定义一个虚方法,由多个子类具体实现。但是这样做的话,不变的和可变的行为在子类中是混合在一起的,造成代码的大量重复。 这时候我们需要使用模板方法模式。 模板方法模式:定义一个操作中算法的 阅读全文

posted @ 2017-04-08 11:48 一个后端狗 阅读(279) 评论(0) 推荐(0)

设计模式6:原型模式
摘要:原型模式用于创建重复的对象,同时又能保证性能。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用 阅读全文

posted @ 2017-04-06 19:47 一个后端狗 阅读(383) 评论(0) 推荐(0)

设计模式5:工厂方法模式
摘要:在之前提到的简单方法模式中,如果需要给计算器添加一种运算,需要增加一个Operation子类,然后修改工厂类。 这样的设计一方面简化了客户端的修改,另一方面需要修改工厂类,这是违反开放-封闭模式的。 处理这种问题的另一种方法是工厂方法模式。 工厂方法模式克服了违反开放-封闭的缺点,同时保持了封装对象 阅读全文

posted @ 2017-04-05 22:26 一个后端狗 阅读(281) 评论(0) 推荐(0)

设计模式4:代理模式
摘要:当客户端代码直接访问对象存在某些问题时,我们会考虑在对象和客户端代码之间加一个访问层,也就是代理模式。 代理模式为其他对象提供一种代理以控制对这个对象的访问。 来看UML图: 代理类与真实类共同实现了相同的接口,这样做可以控制特定方法的输入输出一致。 代理类包含了真实类作为其成员变量。 来看代码: 阅读全文

posted @ 2017-04-05 21:22 一个后端狗 阅读(142) 评论(0) 推荐(0)

设计模式3:装饰模式
摘要:这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子 阅读全文

posted @ 2017-04-05 21:11 一个后端狗 阅读(189) 评论(0) 推荐(0)

设计模式2:策略模式+简单工厂模式
摘要:在简单工厂模式中,我们的客户端代码是这样的: 客户端需要知道Operation类,使用setNumA,setNumB,getResult方法,这其实让客户端与Operation类存在了某种耦合关系。 为了解除这种耦合关系,我们在简单工厂模式中结合了策略模式。 如果在一个系统里面有许多类,它们之间的区 阅读全文

posted @ 2017-03-30 16:03 一个后端狗 阅读(2680) 评论(0) 推荐(0)

设计模式1:简单工厂模式
摘要:简单工厂模式是当有许多个功能类似的类时,为了隔离客户端代码直接操作这些不同的类,在客户端与多个类中间使用一个工厂类,封装掉这些类的不确定性,给客户端代码提供一个一致的接口。 也就是说,工厂类按照输入的参数,构造一个合适的类返回给客户端。客户端通过父类(或接口)调用。 举一个简单的例子来说,我们要实现 阅读全文

posted @ 2017-03-30 15:43 一个后端狗 阅读(290) 评论(0) 推荐(0)

导航