摘要: 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式一般是针对java语言而言,一般的主推面向过程的j 阅读全文
posted @ 2018-03-08 13:50 北风之神0509 阅读(48509) 评论(1) 推荐(4) 编辑
摘要: 模板方法模式:定义一个工作流或算法的基本骨架,而将一些特定步骤的实现延迟到子类中。 模板方法模式是面向对象编程实践中最容易总结出来的模式,即使一开始不知道什么叫设计模式,可能经常都已经用到了这种模式: 实现代理ip采集,可能一开始只写xici代理提取,但是后来又写yaoyao代理提取。 但两个类,只 阅读全文
posted @ 2018-03-08 13:39 北风之神0509 阅读(23182) 评论(0) 推荐(0) 编辑
摘要: 策略模式(Strategy pattern)鼓励使用多种算法来解决一个问题,其杀手级特性是能够在运行时透明地切换算法(客户端代码对变化无感知)。因此,如果你有两种算法,并且知道其中一种对少量输入效果更好,另一种对大量输入效果更好,则可以使用策略模式在运行时基于输入数据决定使用哪种算法 看以看到策略模 阅读全文
posted @ 2018-03-08 13:38 北风之神0509 阅读(23244) 评论(0) 推荐(0) 编辑
摘要: 在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 阅读全文
posted @ 2018-03-08 13:37 北风之神0509 阅读(22878) 评论(0) 推荐(0) 编辑
摘要: 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 有时,我们希望在一个对象的状态改变时更新另外一组对象。 1、发布者中有个方法添加所有观察(订阅)者对象,当发布某个东西(例子中的data变化 阅读全文
posted @ 2018-03-08 13:21 北风之神0509 阅读(23066) 评论(0) 推荐(0) 编辑
摘要: 解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。 对每个应用来说,至少有以下两种不同的用户分类。 基本用户:这类用户只希望能够凭直觉使用 阅读全文
posted @ 2018-03-08 13:17 北风之神0509 阅读(22987) 评论(0) 推荐(0) 编辑
摘要: 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 现在多数应用都有撤销操作。虽然难以想象,但在很多年里,任何软件中确实都不存在撤销操作 阅读全文
posted @ 2018-03-08 13:14 北风之神0509 阅读(22909) 评论(0) 推荐(0) 编辑
摘要: 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它 阅读全文
posted @ 2018-03-08 12:35 北风之神0509 阅读(22745) 评论(0) 推荐(0) 编辑
摘要: 在某些应用中,我们想要在访问某个对象之前执行一个或多个重要的操作,例如,访问敏感信息——在允许用户访问敏感信息之前,我们希望确保用户具备足够的权限。操作系统中也存在类似的情况,用户必须具有管理员权限才能在系统中安装新程序。上面提到的重要操作不一定与安全问题相关。延迟初始化是另一个案例:我们想要把一个 阅读全文
posted @ 2018-03-08 12:27 北风之神0509 阅读(22775) 评论(0) 推荐(0) 编辑
摘要: MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。 View(视图) - 视图代表模型包含的数据的可视化。 C 阅读全文
posted @ 2018-03-08 12:25 北风之神0509 阅读(22605) 评论(0) 推荐(0) 编辑
摘要: 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个 阅读全文
posted @ 2018-03-08 11:46 北风之神0509 阅读(22691) 评论(0) 推荐(0) 编辑
摘要: 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 A B C的关系是他们 阅读全文
posted @ 2018-03-08 11:45 北风之神0509 阅读(22698) 评论(0) 推荐(0) 编辑
摘要: 无论何时我们想对一个对象添加额外的功能,都有下面这些不同的可选方法。 如果合理,可以直接将功能添加到对象所属的类(例如,添加一个新的方法) 使用组合 使用继承与继承相比,通常应该优先选择组合,因为继承使得代码更难复用,继承关系是静态的,并且应用于整个类以及这个类的所有实例(请参考[GOF95, 阅读全文
posted @ 2018-03-08 11:38 北风之神0509 阅读(22595) 评论(0) 推荐(0) 编辑
摘要: 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入 阅读全文
posted @ 2018-03-08 11:20 北风之神0509 阅读(22567) 评论(0) 推荐(0) 编辑
摘要: 有时,我们需要原原本本地为对象创建一个副本。举例来说,假设你想创建一个应用来存储、分享、编辑(比如,修改、添加注释及删除)食谱。用户Bob找到一份蛋糕食谱,在做了一些改变后,觉得自己做的蛋糕非常美味,想要与朋友Alice分享这个食谱。但是该如何分享食谱呢?如果在与Alice分享之后,Bob想对食谱做 阅读全文
posted @ 2018-03-08 11:19 北风之神0509 阅读(22506) 评论(0) 推荐(0) 编辑
摘要: java23种设计模式之一,英文叫Builder Pattern。其核心思想是将一个“复杂对象的构建算法”与它的“部件及组装方式”分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。 看代码先从main函数看起,不是从上往下一 阅读全文
posted @ 2018-03-08 11:17 北风之神0509 阅读(22588) 评论(0) 推荐(0) 编辑
摘要: 抽象工厂 工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。 猫类和狗类的公用方法必须是speak(),不能让猫类的方法名是miaomiao() ,狗类的方法叫wangwang(),把它当鸭子类,在java是用实现接口来规范。py没有接口。 阅读全文
posted @ 2018-03-08 09:58 北风之神0509 阅读(23434) 评论(3) 推荐(1) 编辑