摘要: 思想概要 很难想象到这么晚了才介绍迭代器模式,它是如此的常用以至于我都忘了它也是个设计模式。迭代器模式是用来保护内部数据的设计模式,从这点来说有点像访问者模式,当然,访问者模式比较复杂,它用来定义对内部数据的一种访问动作,它不仅限于迭代,除非你想要的访问动作就是迭代。 迭代器模式用来保护内部数据,尤 阅读全文
posted @ 2018-09-13 15:19 Mubawa 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 思想概要 能把英语的Flyweight模式能翻译成“享元”说明译者具备极强的理解力和编程知识,因为它一下就说到了这个模式的重点和核心。享元模式就是要提供一个方法来共享对象,或者说为了尽量不创建多余的对象,比较常见的就是线程池技术吧。不过对我来说,最好有这个概念的是做编译器的时候,第一个版本的时候对每 阅读全文
posted @ 2018-09-13 14:53 Mubawa 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 思想概要 以我贫瘠的知识储备来说,我认为外观模式是最没有范儿的设计模式了,概念的简单让人震惊。说得简单点,外观模式就是把杂乱无章的调用关系通过一个统一的视图提供给用户,具体来说你可以用一个API列表类来阐述外观模式。它唯一的目的就是同一调用关系,减少系统内部的可见来降低耦合。 上图极为清晰的描述了这 阅读全文
posted @ 2018-09-13 13:22 Mubawa 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 为了跨平台,java在获取路径的时候常常要照顾UNIX类型OS的情绪,会在路径的最前方放置一个斜线“/”,这个斜线在Windows中出现的话,常常就是这个样子: 再将它们导入到java.nio.file.Path类中处理时就是抛出java.nio.file.InvalidPathException异 阅读全文
posted @ 2018-09-12 15:19 Mubawa 阅读(4040) 评论(0) 推荐(0) 编辑
摘要: 思想概要 命令模式属于比较复杂的模式,我尽量用自己理解的场景来描述它。首先,设计模式的目的就是解耦,即:在设计变更时,尽量不改或者只是改很少一部分代码。在命令模式里,有两个部分是非常复杂,或者说很容易出现不易更改的代码块。第一是:命令调度部分,第二是命令具体执行部分。这两个部分能不改就不改,而命令间 阅读全文
posted @ 2018-09-11 13:48 Mubawa 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 思想概要 编程中经常会遇到,在要使用某些类的时候发现它所需要的接口和我们所拥有的接口不一致,比如:需要把一个树形控件和一个列表控件中的数据存到数据库里,而存储数据库的API只接受数组类型。你当然可以重写数据库类的代码,让他同时可以接受多种数据,但是这往往不是你期待的,而且修改已经稳定运行的代码不是一 阅读全文
posted @ 2018-09-11 12:32 Mubawa 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 思想概要 软件无非就是数据和算法,或者叫状态和行为。当你发现某些类他们拥有同样的数据而仅仅是行为不同的话,你第一时间肯定就想把这些类的数据独立到一个类,而算法分离到不同的类中,然后根据具体情况再把数据和算法动态的结合起来,这就是策略模式要处理的基本问题模型。在JDK中我们常常使用的容器排序就是个典型 阅读全文
posted @ 2018-09-10 16:44 Mubawa 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 思想概要 当事件源的管理者根本无法知道事件发生时会有多少,会有哪些处理会被触发时,它最好的选择就是观察模式。这句话的含义很明确,我们要试图建立一个松耦合的架构来处理事件,松耦合常常都是正义的象征,所以此处应该有掌声!观察模式又叫注册/监听模式,这个名字似乎更反映本质,当你对某个信号或者事件感兴趣时, 阅读全文
posted @ 2018-09-10 16:05 Mubawa 阅读(441) 评论(0) 推荐(0) 编辑
摘要: 思想概要 装饰模式是对里氏替换的一种扩充,里式替换原则,即:基类可以出现的地方都可以替换为子类。这似乎就是”继承“的标准定义嘛,但是我们的前辈常常告诫我们,继承是危险的,要谨慎使用继承,除非你能够证明A is B,而不是A like B。对于所有A like B的地方,都要积极的使用组合,而不是继承 阅读全文
posted @ 2018-09-10 13:48 Mubawa 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 思想概要 代理模式的基本思想来源于“对修改封闭”这个原则,对于某些不是你亲自编写的代码,你最好不要去修改它来扩展其功能,而是通过包装一个代理类去扩展它。因为对方代码可能会在新的版本中被改变,而你对之前版本做的代码层次的修改很有可能在第三方类被替换的时候失去功能。但是请从应用上区分代理模式和装饰模式, 阅读全文
posted @ 2018-09-10 09:51 Mubawa 阅读(165) 评论(0) 推荐(0) 编辑