摘要:意图:将一个命令请求封装成一个对象。解决命令的请求者和命令的实现者之间的耦合关系。 经典的命令模式包括4个角色: Command:定义命令的统一接口 ConcreteCommand:Command接口的实现者,用来执行具体的命令,某些情况下可以直接用来充当Receiver。 Receiver:命令的实际执行者 Invoker:命令的请求者,是命令模式中最重要的角色。这个角色用来对各个命令进行控制。...
阅读全文
摘要:设计原则1: 找出应用中可能需要变化的部分,把他们独立出来,不要和那些不需要变化的部分融合在一起。 设计原则2: 针对接口编程,而不是针对实现编程。 这里的接口包含抽象类。 编程时针对超类型(父类)进行编程,也就是说变量的声明类型(或方法的返回类型)是超类型,而不是具体的某个子类。 设计原则3: 多用组合 少用继承。 组合和继承都能作为将不变的代码和变化的代码分开的方式,但是组合更加灵活,可以将一...
阅读全文
摘要:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。 类适配器模式 类的适配器模式把适配的类的API转换成为目标类的API。 在上图中可以看出,Adaptee类并没有sampleOperation2()方法,而客户端则期待这个方法...
阅读全文
摘要:单例模式的几种实现方式 单例模式的实现有多种方式,如下所示: 1、懒汉式,线程不安全 是否 Lazy 初始化:是 是否多线程安全:否 实现难度:易 描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。这种方式 lazy loading 很明显,不要求线程安全,在多线程不...
阅读全文
摘要:简单工厂模式 public class ShapeFactory { //使用 getShape 方法获取形状类型的对象 public Shape getShape(String shapeType){ if(shapeType == null){ return null; ...
阅读全文
摘要:装饰器模式 典型的例子:JAVA IO。 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰...
阅读全文
摘要:关于基本的OOP特征: OOP的几大特征是抽象 继承 封装 多态。 我们把共同的部分抽象出来作为抽象类的存在,使用继承和接口来实现多态,然后私有的部分封装起来。一定程度上说,这些概念都是简单的设计模式。 设计原则1: 找出应用中可能需要变化的部分,把他们独立出来,不要和那些不需要变化的部分融合在一起。 设计原则2: 针对接口编程,而不是针对实现编程。 这里的接口包含抽象类。 设计原则3: 多用...
阅读全文