一、模板方法模式概念 模板方法:在一个方法中定义一个算法的骨架,具体实现延迟到子类。 应用:Comparable接口的CompareTo方法 钩子:是一种声明在抽象类中的方法,通常为空只会返回true,作为条件控制影响算法流程。 二、UML图 三、代码 Beverage.java public ab Read More
posted @ 2019-12-03 20:05 卑微芒果 Views(72) Comments(0) Diggs(0)
一、迭代器模式概念 迭代器模式:使得客户遍历集合而又不需要知道集合内部的具体实现。 二、UML图 Read More
posted @ 2019-12-03 20:05 卑微芒果 Views(134) Comments(0) Diggs(0)
一、组合模式概念 组合模式:可以将对象组合成树状结构。如,菜单与子菜单的关系。 UML图 我们可以看到这是一个复合的结构,也节点不一定支持从基类继承的所有方法,复合节点也不一定都支持从基类继承而来的全部方法。 Read More
posted @ 2019-12-03 20:04 卑微芒果 Views(164) Comments(0) Diggs(0)
一、状态模式概念 状态模式:将状态封装成独立的类,将状态机中的行为委托给当前状态实现。 二、UML图 我们可以看到状态和状态机实现相同的操作,状态被封装成类,状态机将操作委托给当前状态,当前状态可以通过setState()来改变状态机的当前状态来实现状态转换。 三、代码 State.java pub Read More
posted @ 2019-12-03 20:04 卑微芒果 Views(132) Comments(0) Diggs(0)
一、代理模式概念 代理模式:当实际对象由于某些原因不能够直接访问,就让代表对象控制对它的访问。 远程代理调用流程:客户端有一个称为桩的辅助对象,服务端有一个称为骨架的辅助对象,客户端不知道要调用的对象在远方,调用辅助对象就像调用实际对象一样。实际上,客户端发送调用申请给桩,桩与骨架通信,骨架请求调用 Read More
posted @ 2019-12-03 20:04 卑微芒果 Views(110) Comments(0) Diggs(0)
这里也只说一下简单的原理。 Model:模型实现处理数据的切逻辑。 View:视图呈现模型的数据和状态。 Control:解读视图对模型的操作。 视图和模型之间使用观察者模式,只要模型的状态改变视图立刻呈现出来,视图和控制器使用策略模式控制器解读视图对模型的操作并通知模型做出相应动作。 Read More
posted @ 2019-12-03 20:04 卑微芒果 Views(150) Comments(0) Diggs(0)
外观模式:简单得封装了子系统的一组接口,简化了子系统的接口,也实现了解耦。 空对象模式:当需要一个NUll值时,返回一个没有意义的对象表示不作任何动作。 Read More
posted @ 2019-12-03 20:03 卑微芒果 Views(111) Comments(0) Diggs(0)
一、策略模式的概念 策略设计模式:定义一组可以互相替换的算法或行为,在运行时动态的替换。 特点:比继承更加优雅的一种代码复用的方式。 二、UML图 定义了一个国王,国王可以随时通过setWeapon()方法更换武器ABC,将fight()方法的实现委托给w.useWeapon()。 三、代码 Cha Read More
posted @ 2019-12-03 20:03 卑微芒果 Views(270) Comments(0) Diggs(0)
设计模式:总结前人的设计经验和方法,帮助我们写出低耦合易于维护的代码的。 设计模式的原则 开闭原则:对修改关闭,对扩展开放 依赖倒转原则:针对接口和抽象编程 合成复用原则:多用组合少用继承 接口隔离原则:松耦合 最少知道原则:实体之间尽量少的相互作用 里式代换原则:基类可以出现的地方子类也可以出现。 Read More
posted @ 2019-12-03 19:59 卑微芒果 Views(311) Comments(0) Diggs(0)
这类题是最简单的了都是一个套路,不像动态规划一类题一个套路,没做过就是不会也极难想出来。 一、BFS 解决的问题:用来初始点解决到指定点的最短路径问题,因为图的每一层上的点到初始点的距离相同。(注意是无权图) 在程序实现 BFS 时需要考虑以下问题: 队列:用来存储每一轮遍历得到的节点; 标记:对于 Read More
posted @ 2019-12-03 10:49 卑微芒果 Views(966) Comments(0) Diggs(0)