摘要: 单例模式(Singleton Pattern):保证类仅有一个实例,并提供一个访问它的全局访问点. 下面是单例模式的demo: 上面类的设计如下图: 单例模式因为Singleton类封装它的唯一实例,这样可以控制客户怎样访问和何时访问它,简单的说就是对唯一实例的受控访问 比如只有第一次被引用的时候才 阅读全文
posted @ 2017-11-22 14:51 Andy冉明 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式(Iterator Pattern):提供方法顺序访问一个聚合对象中各元素,而又不暴露该对象的内部表示. 下面是一个迭代器模式的demo: 上面类的设计如下图: 当需要对聚集有多种方式遍历时,可以考虑使用迭代器模式 迭代器模式分离了集合的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不 阅读全文
posted @ 2017-11-21 16:18 Andy冉明 阅读(1289) 评论(1) 推荐(0) 编辑
摘要: 组合模式(Composite Pattern):将对象组合成成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性. 下面是一个组合模式的demo: 上面类的设计如下图: 应用场景: 在需要体现部分与整体层次的结构时 希望用户忽略组合对象与单个对象的不同,统一 阅读全文
posted @ 2017-11-20 15:14 Andy冉明 阅读(2451) 评论(0) 推荐(0) 编辑
摘要: 备忘录模式(Memento Pattern):不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,这样已经后就可将该对象恢复到原先保存的状态 下面是一个备忘录模式的demo: 上面的类的设计如下图: Originator(发起人):负责创建一个备忘录Memento,用以记录当前时 阅读全文
posted @ 2017-11-17 10:39 Andy冉明 阅读(1443) 评论(0) 推荐(0) 编辑
摘要: 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口. 下面是一个适配器模式的demo: 上面类的设计如下图: 系统数据和行为都正确,但接口不符合时,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器模式主要应用于希望复用一些现存的类,但接口又与复用环境不 阅读全文
posted @ 2017-11-16 10:35 Andy冉明 阅读(2403) 评论(0) 推荐(0) 编辑
摘要: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 下面是一个状态模式的demo: 上面类的设计如下图: 应用场景:当控制一个对象的状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化 阅读全文
posted @ 2017-11-15 10:32 Andy冉明 阅读(2334) 评论(0) 推荐(0) 编辑
摘要: 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的类 下面是一个抽象工厂的demo: 上面类的设计如下图: 优点: 具体工厂类如MysqlFactory在一个应用中只需要初始化一次,这样改动一个具体工厂变得很容易,只需要改变 阅读全文
posted @ 2017-11-14 14:42 Andy冉明 阅读(2661) 评论(0) 推荐(1) 编辑
摘要: 观察者模式(发布-订阅模式 Publish Subscribe Pattern):定义了一种一对多的关系,让多个观察对象同时监听一个主题对象,当主题对象状态发生变化时会通知所有观察者,是它们能够自动更新自己,是一种行为设计模式。 观察者模式的结构 1,Publisher 会向其他对象发送值得关注的事 阅读全文
posted @ 2017-11-13 15:34 Andy冉明 阅读(627) 评论(0) 推荐(0) 编辑
摘要: 建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 下面是一个建造者模式的demo 上面类的设计如下图: 指挥者Director 调用建造者Builder的对象 具体的建造过程是在Builder的子类中实现的 作者:Andy 出处: 阅读全文
posted @ 2017-11-09 11:28 Andy冉明 阅读(1281) 评论(2) 推荐(0) 编辑
摘要: 外观模式(Facade Pattern):为子系统中的一组接口提供一个一致界面,此模式定义一个高层接口,使得子系统更加容易使用 下面是一个外观模式的demo: 上面类的设计如下图: Fund类需要知道子系统类的功能,以便将适当的client请求发送给合适的子系统对象,使子系统的使用更加简单 作者:A 阅读全文
posted @ 2017-11-08 10:33 Andy冉明 阅读(644) 评论(0) 推荐(0) 编辑