设计模式
学习与总结。
闻道大笑之
这个作者很懒,什么都没留下…
展开
-
设计模式之策略模式
设计模式之策略模式 一、模式介绍 1.1 模式意图 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独 立于使用它的客户而变化。 1.2 动机 有许多算法可对一个正文流进行分行。将这些算法硬编进使用它们的类中是不可取的,原因: 需要换行功能的客户程序如果直接包含换行算法代码的话将会变得复杂,这使得客户程 序庞大并且难以维护, 尤其当其需要支持多种换行算法时问题会更加严重。 不同的时候需要不同的算法,我们不想支持我们并不使用的换行算法。 当换行功能是客户程序的一个难以分割原创 2020-08-15 11:36:03 · 209 阅读 · 0 评论 -
设计模式之原型模式
设计模式之原型模式 一、模式定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 二、为什么要使用原型模式 当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式。 三、 哪些情况下可以考虑使用原型模式 构建复杂对象时,构建的过程很复杂,或者构建对象代价很高。 对象的很多属性可以公用,只有极少部分的属性需要单独赋值。 当要实例化的类是在运行时刻指定时,例如,通过动态装载。 为了避免创建一个与产品类层次平行的工厂类层次时。 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原原创 2020-08-15 08:21:37 · 101 阅读 · 0 评论 -
设计模式之建造者模式
设计模式之建造者模式 什么是建造者模式? 建造者模式解决了什么问题? 什么时候应该使用建造者模式? 怎么使用? 一、模式说明 1.1 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 1.2 动机 1.3 适用性 在以下情况下使用 Builder 模式: 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同的表示时。 一个类的构造器或者静态工厂中有多个参数时,特别是大多数参数是可选的时候。 1.4 结构原创 2020-08-09 10:23:56 · 144 阅读 · 0 评论 -
设计模式之观察者模式
设计模式之观察者模式 观察者模式是什么?解决了什么问题? 什么情况下适用观察者模式? 怎么实现观察者模式? 现在的OOM系统里面,有哪些地方用到了观察者模式呢? 一、模式介绍 1.1 意图 定义对象间的一种一对多的依赖关系 ,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 1.2 动机 将一个系统分割成一系列相互协作的类有一个常见的副作用:需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,因为这样降低了它们的可重用性。 例如, 许多图形用户界面工具箱将用户应原创 2020-07-19 20:59:12 · 164 阅读 · 0 评论 -
设计模式之单例模式
设计模式之单件模式 一、模式说明 1.1 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 1.2 动机 对一些类来说,只有一个实例是很重要的。虽然系统中可以有许多打印机,但却只应该有一个打印假脱机,只应该有一个文件系统和一个窗口管理器。一个数字滤波器只能有一个 A / D 转换器。一个会计系统只能专用于一个公司。 我们怎么样才能保证一个类只有一个实例并且这个实例易于被访问呢?一个全局变量使得一个对象可以被访问,但它不能防止你实例化多个对象。 一个更好的办法是,让类自身负责保存它的唯一实原创 2020-07-04 15:59:28 · 162 阅读 · 0 评论 -
设计模式之工厂模式
设计模式之工厂模式 简单工厂?工厂方法?抽象工厂?是什么,有什么区别? 为什么要使用工厂方法?它解决了什么问题?有什么好处? 使用工厂方法有什么限制? 在什么情况下我们会考虑使用工厂模式呢? 一、简单工厂 1.1 案例演示 情境:现在要你做一个计算器控制台程序,要求输入两个数和运算符,得到结果。 在没吃公鸡蛋之前,你写的程序可能是这样的: public static void main(String[] args) { try { Scanner scanner = new Sc原创 2020-06-27 11:26:17 · 390 阅读 · 0 评论 -
设计模式——软件设计的太极剑法
起势,左右野马分鬃,白鹤亮翅……随着一声声响亮的招式,无忌打出了一套漂亮的连击。等等,这里不是设计模式专场吗?是不是搞错了? 没错,设计模式其实就是软件设计世界里面的一套武功秘籍。是由历代“武学大师”呕心沥血总结出来,并在实战中大展拳脚。下面就让我们一起来看看,设计模式的庐山真面目吧。原创 2020-06-24 06:59:28 · 563 阅读 · 0 评论