摘要: 简述: 动态的给一个对象添加一些额外的职责,就增加功能来说,相比生成子类更为灵活。 装饰器(Decorator)模式,是一种在运行期动态给某个对象的实例增加功能的方法。 在IO的Filter模式一节中其实已经讲过装饰器模式了。在Java标准库中。InputStream时抽象类。FileInputSt 阅读全文
posted @ 2021-09-01 16:42 王佳智 阅读(379) 评论(0) 推荐(0)
摘要: 将抽象部分与它实现部分分离,使他们都可以独立的变化。 桥接模式的定义非常玄乎,直接理解不太容易,举个例子。 假设某个汽车厂商生产三种品牌的的汽车:Big,Tiny,Boss,每种品牌又可以选择燃油,纯电和混合动力。如果用传统的继承来表示各个最终车型,一共有3个抽象类加9个最终子类,会导致子类非常的多 阅读全文
posted @ 2021-09-15 09:30 王佳智 阅读(211) 评论(0) 推荐(0)
摘要: 将一个类的接口转换为客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器是Adapter,也叫做Wrapper,是指如果一个接口需要B接口,但是待传入的对象确是A接口,怎么办? 我们举个例子,如果去了美国,我们随身携带的电器是无法直接使用的,因为美国的插座标注安和 阅读全文
posted @ 2021-09-15 09:05 王佳智 阅读(2650) 评论(0) 推荐(0)
摘要: 为什么要使用BigDecimal: 请参考以下的运行程序: 1.使用0.1+0.2时 出现了如下的情况: 这个是没有BigDecimal的情况 0.1 + 0.2 =0.30000000000000004。 产生这种错误的原因是: 因为计算机是二进制的,对于double,float类型的10进制数据 阅读全文
posted @ 2021-09-14 21:36 王佳智 阅读(772) 评论(0) 推荐(0)
摘要: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 因为这个类只有一个实例,所以我们不能够允许调用方通过new的方式创建实例了。所以,单例的构造方法必须是private,这样就防止了调用方自己创建实例,但是在类的内部,可以通过一个静态字段来引用唯一创建的实例的: public class Sin 阅读全文
posted @ 2021-09-14 20:00 王佳智 阅读(306) 评论(0) 推荐(0)
摘要: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式 Prototype,是指创建新的对象的时候,根据一个现有的原型来创建。 我们举个例子:如果我们已经有了一个String[]数组,想要再创建一个一摸一样的String[]数组,怎么写? 实际上创建的过程很简单,就是把现有的数组 阅读全文
posted @ 2021-09-14 19:30 王佳智 阅读(911) 评论(0) 推荐(0)
摘要: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 生成器模式(Builder)是使用多个“小型”工厂来最终创建出一个完整对象。 当我们使用Builder的时候,一般来说,是因为创建这个对象的步骤比较多,每个步骤都需要一个零部件,最终组合成一个完整的对象。 我们仍然以Mark 阅读全文
posted @ 2021-09-14 11:18 王佳智 阅读(554) 评论(0) 推荐(0)
摘要: 与工厂方法相比,工厂是抽象的,产品是抽象的,需要去实现具体的产品,创建实现类抽象Factory定义好的抽象方法。 阅读全文
posted @ 2021-09-14 10:21 王佳智 阅读(124) 评论(0) 推荐(0)
摘要: 定义一个创建对象的接口让子类去决定实例化哪个类。FactoryMethod使一个类的实例化延迟到其子类。 工厂方法即Factory Method,是一种对象创建型模式。 工厂方法的目的是使得创建对象和使用对象是分离的,并且客户端总是引用抽象工厂和抽象产品(也就是说使用Product和Factory) 阅读全文
posted @ 2021-09-14 09:52 王佳智 阅读(1250) 评论(1) 推荐(0)
摘要: 这种情况可能是因为前端发送了两个请求,导致了这种情况,所以我们需要过滤掉我们不需要的请求,不对它进行拦截已经执行相关的操作,代码如下: if (HttpMethod.OPTIONS.toString().equals(httpServletRequest.getMethod())) { System 阅读全文
posted @ 2021-09-01 10:45 王佳智 阅读(1695) 评论(0) 推荐(0)