一、命令模式相关概念 命令模式:将具体的执行者封装成命令供调用者调用。 命令对象将调用者和执行者分离,调用者就不必去关心具体的执行过程,以达到解耦和易于维护的目的。 应用:线程池 二、UML图 三、代码 Command.java public interface Command { void exe Read More
posted @ 2019-12-03 20:06 卑微芒果 Views(151) Comments(0) Diggs(0) Edit
一、单例模式的概念 单例模式:创建唯一的实例并提供一个全局的访问点。 注意多线程问题,不同的类加载器可能会使得单例失效。 二、代码 (1)Synchronized同步方法 简单但是开销大,Synchronized是一个很重的操作 public class Singleton { private st Read More
posted @ 2019-12-03 20:06 卑微芒果 Views(91) Comments(0) Diggs(0) Edit
一、工厂模式概念 工厂模式:使得对象的创建和使用它的客户解耦。 简单工厂:简单的把创建对象的方法封装到一个类中。 工厂方法:在基类中声明创建对象的方法,子类中实现。 抽象工厂:定义一组统一的创建对象的接口。 区别:虽然三者都可以解耦,但是工厂方法和抽象工厂比简单工厂更加富有弹性,工厂方法针对单一对象 Read More
posted @ 2019-12-03 20:06 卑微芒果 Views(107) Comments(0) Diggs(0) Edit
一、装饰者模式概念 装饰者模式:提供了一种比继承更加优雅更加弹性的扩展对象功能的方式。 特点:装饰者虽然可以扩展对象功能,但是也会增加很多的子类使得系统变得复杂。 要点:①装饰者和被装饰者具有相同的超类型 ②可以在装饰者委托被装饰者行为的时候扩展功能 应用:Java IO 二、UML图 装饰者要和被 Read More
posted @ 2019-12-03 20:06 卑微芒果 Views(156) Comments(0) Diggs(0) Edit
一、迭代器模式概念 迭代器模式:使得客户遍历集合而又不需要知道集合内部的具体实现。 二、UML图 Read More
posted @ 2019-12-03 20:05 卑微芒果 Views(116) Comments(0) Diggs(0) Edit
一、模板方法模式概念 模板方法:在一个方法中定义一个算法的骨架,具体实现延迟到子类。 应用:Comparable接口的CompareTo方法 钩子:是一种声明在抽象类中的方法,通常为空只会返回true,作为条件控制影响算法流程。 二、UML图 三、代码 Beverage.java public ab Read More
posted @ 2019-12-03 20:05 卑微芒果 Views(65) Comments(0) Diggs(0) Edit
一、适配器模式的概念 适配器模式:把一个类的接口转换成用户希望的另外一个接口。 应用:主要用于维护旧的代码 二、UML图 电脑只能够读USB接口,但是我想要读CD怎么办,只能买一个实现USB接口的适配器了。 三、代码 USB.java public interface USB { void read Read More
posted @ 2019-12-03 20:05 卑微芒果 Views(127) Comments(0) Diggs(0) Edit
一、观察者模式的概念 观察者模式:定义了一对多的依赖,当被观察者改变时,所有的观察者都会收到改变的通知。 应用场景:Java Swing 注意:被观察者可以充当观察者,观察者也可以充当被观察者,也就是说,观察者模式是可以嵌套使用的。 观察者的实现方式有”推“和“拉”两种,使用推的方式虽然方便但是可能 Read More
posted @ 2019-12-03 20:05 卑微芒果 Views(197) Comments(0) Diggs(0) Edit
一、代理模式概念 代理模式:当实际对象由于某些原因不能够直接访问,就让代表对象控制对它的访问。 远程代理调用流程:客户端有一个称为桩的辅助对象,服务端有一个称为骨架的辅助对象,客户端不知道要调用的对象在远方,调用辅助对象就像调用实际对象一样。实际上,客户端发送调用申请给桩,桩与骨架通信,骨架请求调用 Read More
posted @ 2019-12-03 20:04 卑微芒果 Views(102) Comments(0) Diggs(0) Edit
这里也只说一下简单的原理。 Model:模型实现处理数据的切逻辑。 View:视图呈现模型的数据和状态。 Control:解读视图对模型的操作。 视图和模型之间使用观察者模式,只要模型的状态改变视图立刻呈现出来,视图和控制器使用策略模式控制器解读视图对模型的操作并通知模型做出相应动作。 Read More
posted @ 2019-12-03 20:04 卑微芒果 Views(145) Comments(0) Diggs(0) Edit
一、组合模式概念 组合模式:可以将对象组合成树状结构。如,菜单与子菜单的关系。 UML图 我们可以看到这是一个复合的结构,也节点不一定支持从基类继承的所有方法,复合节点也不一定都支持从基类继承而来的全部方法。 Read More
posted @ 2019-12-03 20:04 卑微芒果 Views(156) Comments(0) Diggs(0) Edit
一、状态模式概念 状态模式:将状态封装成独立的类,将状态机中的行为委托给当前状态实现。 二、UML图 我们可以看到状态和状态机实现相同的操作,状态被封装成类,状态机将操作委托给当前状态,当前状态可以通过setState()来改变状态机的当前状态来实现状态转换。 三、代码 State.java pub Read More
posted @ 2019-12-03 20:04 卑微芒果 Views(125) Comments(0) Diggs(0) Edit
一、策略模式的概念 策略设计模式:定义一组可以互相替换的算法或行为,在运行时动态的替换。 特点:比继承更加优雅的一种代码复用的方式。 二、UML图 定义了一个国王,国王可以随时通过setWeapon()方法更换武器ABC,将fight()方法的实现委托给w.useWeapon()。 三、代码 Cha Read More
posted @ 2019-12-03 20:03 卑微芒果 Views(260) Comments(0) Diggs(0) Edit
外观模式:简单得封装了子系统的一组接口,简化了子系统的接口,也实现了解耦。 空对象模式:当需要一个NUll值时,返回一个没有意义的对象表示不作任何动作。 Read More
posted @ 2019-12-03 20:03 卑微芒果 Views(106) Comments(0) Diggs(0) Edit
设计模式:总结前人的设计经验和方法,帮助我们写出低耦合易于维护的代码的。 设计模式的原则 开闭原则:对修改关闭,对扩展开放 依赖倒转原则:针对接口和抽象编程 合成复用原则:多用组合少用继承 接口隔离原则:松耦合 最少知道原则:实体之间尽量少的相互作用 里式代换原则:基类可以出现的地方子类也可以出现。 Read More
posted @ 2019-12-03 19:59 卑微芒果 Views(300) Comments(0) Diggs(0) Edit
这类题是最简单的了都是一个套路,不像动态规划一类题一个套路,没做过就是不会也极难想出来。 一、BFS 解决的问题:用来初始点解决到指定点的最短路径问题,因为图的每一层上的点到初始点的距离相同。(注意是无权图) 在程序实现 BFS 时需要考虑以下问题: 队列:用来存储每一轮遍历得到的节点; 标记:对于 Read More
posted @ 2019-12-03 10:49 卑微芒果 Views(928) Comments(0) Diggs(0) Edit