摘要: 摘要 最近在读GOF的Design Patterns: Elements of Reusable Object-Oriented Software(设计模式:可复用面向对象软件的基础),学习前辈们的经验来增加自己的编码设计能力。在学习的过程中,会把我从书上学到的知识以及自己的理解写到这里。一方面能够 阅读全文
posted @ 2018-12-06 19:24 王兴Chen 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 前言 迭代器模式,属于对象行为型模式。它的目的是将一个集合对象的迭代与其本身分离,使这个聚合对象更单纯,并且在遍历的同时不需要暴露该聚合对象的内部结构。 在《设计模式 - 可复用的面向对象软件》一书中将之描述为“ 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露对象的内部表示 ”。 结构 A 阅读全文
posted @ 2018-12-06 19:23 王兴Chen 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 前言 解释器模式,类行为型模式。一种用来解释特定文法(语言的语法和表达式)规则的方式。这种行为模式使用了类似组合的结构来构建一个抽象语法树(Abstract Syntax Tree,AST),用来描述该解释器所解释的语法。如果你想要了解组合模式,可跳转至二十三种设计模式[8] - 组合模式(Comp 阅读全文
posted @ 2018-12-06 19:22 王兴Chen 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 前言 命令模式,对象行为型模式的一种。它帮助我们将功能的调用者与实现者之间解耦(甚至完全解耦)。调用者与实现者之间并不是直接引用关系,调用者只需要知道如何发送当前功能的请求即可,而不用关心该请求由谁在何时完成。 “ 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请 阅读全文
posted @ 2018-12-06 19:21 王兴Chen 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 前言 职责链模式,属于对象行为型模式。你可以想象成有一排人等着帮你处理问题,你只需要将你的问题告诉第一个人然后等待结果即可。如果第一个人处理不了这个问题,他会将这个问题告诉第二个人,以此类推。但并不意味着你的问题一定会被解决。 “ 它的目的是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之 阅读全文
posted @ 2018-12-06 19:20 王兴Chen 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 前言 代理模式,属于对象结构型模式。在《设计模式 - 可复用的面向对象软件》一书中将之描述为“ 为其它对象提供一种代理以控制对这个对象的访问 ”。 在代理模式中,通常使用一个类来代表另一个类的功能,并由这个代理对象去控制原对象的引用。 结构 Subjuet(公共接口):代理类和被代理类的公共接口,保 阅读全文
posted @ 2018-12-06 19:20 王兴Chen 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 摘要 享元模式,对象结构型模式的一种。在《设计模式 - 可复用的面向对象软件》一书中将之描述为“ 运用共享技术有效地支持大量细粒度的对象 ”。 在享元模式中,通过工厂方法去统一管理一个对象的创建,在创建对象前会尝试复用工厂类中缓存的已创建对象,如果未找到可重用的对象则创建新的对象实例并将其缓存。以此 阅读全文
posted @ 2018-12-06 19:19 王兴Chen 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 前言 外观模式,又称门面模式,对象结构型模式。在《设计模式 - 可复用的面向对象软件》一书中将之描述为“ 为系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 ”。 模式 需要角色如下: Facade(门面):子系统为外部提供的入库,负责将外部 阅读全文
posted @ 2018-12-06 19:18 王兴Chen 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 前言 装饰模式,属于对象结构型模式。在《设计模式 - 可复用的面向对象软件》一书中将之描述为“ 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活”。 我理解的装饰模式就是对现有类的包装,在不对现有类做出修改的前提下为其临时扩展额外的功能。就像套娃一样,在 阅读全文
posted @ 2018-12-06 19:17 王兴Chen 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 前言 组合模式,类结构模式的一种。在《设计模式 - 可复用的面向对象软件》一书中将之描述为“ 将对象组合成树状结构以表示 “部分-整体” 的层次结构,使得用户对单个对象和组合对象的使用具有一致性 ”。 工作中我们经常会接触到一个对象中包含0个或多个其它对象,而其它对象依然包含0个或多个其它对象,这种 阅读全文
posted @ 2018-12-06 19:13 王兴Chen 阅读(1246) 评论(0) 推荐(0) 编辑
摘要: 前言 桥接模式,类结构型模式的一种。在《设计模式 - 可复用的面向对象软件》一书中将之描述为“ 将抽象部分与它的实现部分分离,使它们都可以独立的变化 ”。 桥接模式可以帮助我们解决那些因为多层次的继承导致的类的个数急剧增加的问题。将抽象与实现的分离提高了类的复用性,同时也保证了各部分的独立性,方便后 阅读全文
posted @ 2018-12-06 19:12 王兴Chen 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 前言 适配器,属于类结构型模式。《设计模式 - 可复用的面向对象软件》一书中将之描述为“ 将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 ”。 在日常生活中,我们经常遇到“不兼容”的情况。比如充电器的插头与插座不兼容,手机的接口与电脑的接口兼容等等 阅读全文
posted @ 2018-12-06 19:11 王兴Chen 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 前言 单件又名单例,五种创建模式中的一种。《设计模式 - 可复用的面向对象软件》一书中将之描述为“ 保证一个类仅有一个实例,并提供一个访问它的全局访问点 ”。 单件模式一般在一个类只需要一个实例时使用。比如为了保证原型管理器只存在一个实例,可以将原型管理器设计成一个单件(二十三种设计模式[4] - 阅读全文
posted @ 2018-12-06 19:09 王兴Chen 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 前言 原型,创建型模式中的一种。《设计模式 - 可复用的面向对象软件》一书中将之描述为“ 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ”。 通常,我们使用构造函数来实例化一个对象,而在原型模式中,对同一个类只进行一次实例化操作并将其缓存,之后再需要这个类的新实例时,则通过克隆这个 阅读全文
posted @ 2018-12-06 19:08 王兴Chen 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 前言 生成器,又名建造者模式,属于创建型模式。在《设计模式 - 可复用的面向对象软件》一书中对它的描述为“ 将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示 ”。 与工厂方法和抽象工厂不同的是,工厂方法侧重于将类的实例化延迟到子类,由子类决定工厂的创建,从而得到一个产品,抽象 阅读全文
posted @ 2018-12-06 19:07 王兴Chen 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 前言 抽象工厂又称Kit,创建型模式的一种。在《设计模式 - 可复用的面向对象软件》一书中对它的描述为“ 提供一个创建一系列相关或相互依赖的对象的接口,而无需指定它们具体的类 ”。 个人将抽象工厂理解为“ 一个承载了多个工厂方法的超级工厂,每个超级工厂负责生产一个产品族 ”。ps:产品族是以产品平台 阅读全文
posted @ 2018-12-06 19:06 王兴Chen 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 前言 工厂方法,又名工厂模式,属于创建型模式。 其目的是通过定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类。 所以,当你不知道你必须要创建的对象的类型时或者你希望在程序运行时决定你需要创建的类型时,可以考虑工厂方法。 结构 需要角色如下: IProduct(产品接口 阅读全文
posted @ 2018-12-06 19:04 王兴Chen 阅读(494) 评论(0) 推荐(0) 编辑