随笔分类 -  设计模式

摘要:1、什么是观察者模式 观察者模式(Observer),是一种行为性模型,行为型模式关注的是系统中对象之间的相互交互,解决系统在运行时对象之间的相互通信和协作,进一步明确对象的职责。相比来说,创建型模式关注对象的创建过程,结构型模式关注对象和类的组合关系。 观察者模式主要用于1对N的通知。当一个对象的 阅读全文
posted @ 2019-03-25 16:41 柚子味儿的西瓜 阅读(21) 评论(0) 推荐(0)
摘要:1、什么是策略模式 定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 2、策略模式应用场景 策略模式的用意是针对一组算法或逻辑,将每一个算法或逻辑封装到具有共同接口的独立的类中,从而使得它们之间可以相互替换。策略模式使得算法或逻辑可以 阅读全文
posted @ 2019-03-25 16:27 柚子味儿的西瓜 阅读(10) 评论(0) 推荐(0)
摘要:1、什么是装饰器模式 装饰器模式,也成为包装模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。其结构图如下: Component为统一接口,也是装饰类和被装饰类的基本类型。 ConcreteComponent为具体实现类,也是被装饰类,他本身是个具有一些功能的完整的类。 Decor 阅读全文
posted @ 2019-03-25 16:21 柚子味儿的西瓜 阅读(15) 评论(0) 推荐(0)
摘要:1、什么是原型模式 原型模式是一个创建型的模式。原型二字表明了该模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在 阅读全文
posted @ 2019-03-25 16:04 柚子味儿的西瓜 阅读(18) 评论(0) 推荐(0)
摘要:1、什么是外观设计模式 外观模式(Facade Pattern)门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的 阅读全文
posted @ 2019-03-25 14:33 柚子味儿的西瓜 阅读(13) 评论(0) 推荐(0)
摘要:适配器案例 日本电饭煲电源接口标准是110V电压,而中国标准电压接口是220V,所以要想在中国用日本电饭煲,需要一个电源转换器。 定义日本和中国两种接口及其实现 (1)110V电源接口 //日本110V 电源接口 public interface JP110VInterface { public v 阅读全文
posted @ 2019-03-25 14:07 柚子味儿的西瓜 阅读(49) 评论(0) 推荐(0)
摘要:1、什么是模板方法设计模式 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的 重复代码全部在父类里面,不同业务的,使用抽象方法,抽取给子类进行实现。抽取过程 抽象方法。就是将一些相同操作的代码,封装成一个算法的骨架。核心的部 阅读全文
posted @ 2019-03-25 13:51 柚子味儿的西瓜 阅读(17) 评论(0) 推荐(0)
摘要:1、什么是建造者模式 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。 2、建造者模式通常包括下面几个角色: (1)Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要 阅读全文
posted @ 2019-03-25 10:32 柚子味儿的西瓜 阅读(15) 评论(0) 推荐(0)
摘要:1、什么是代理设计模式 通过代理对象可以去控制对对象的访问,并且可以在访问前和访问后进行自定义处理。 2、代理模式应用场景 SpringAop、事务原理、日志打印、权限控制、远程调用、安全代理 3、代理的分类 (1)静态代理 (2)动态代理 (JDK自带动态代理、Cglib动态代理) 4、静态代理 阅读全文
posted @ 2019-03-25 10:17 柚子味儿的西瓜 阅读(14) 评论(0) 推荐(0)
摘要:1、什么是工厂模式 实现了创建者和调用者的分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式 2、工厂模式分类 (1)简单工厂模式 简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品类所对应的参数即可。但是工厂的职责过重,而且当类型过多时不利于系统的 阅读全文
posted @ 2019-03-22 16:59 柚子味儿的西瓜 阅读(18) 评论(0) 推荐(0)
摘要:虚线箭头指向依赖; 实线箭头指向关联; 虚线三角指向接口; 实线三角指向父类; 空心菱形能分离而独立存在,是聚合; 实心菱形精密关联不可分,是组合; 上面是UML的语法。 在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖 阅读全文
posted @ 2019-03-22 16:13 柚子味儿的西瓜 阅读(9) 评论(0) 推荐(0)
摘要:1、23种设计模式: (1)创建型模式,五种: 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式 (2)结构型模式,七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式 (3)行为型模式,十一种: 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令 阅读全文
posted @ 2019-03-22 14:59 柚子味儿的西瓜 阅读(14) 评论(0) 推荐(0)
摘要:1、什么是反射 就是正在运行、动态获取某个类的所有信息 2、反射机制的应用场景 JDBC加载驱动 SpringIoc 框架 3、反射机制获取类的三种方式 //第一种方式: Class<?> classc1 = Class.forName("Employee"); //第二种方式: //java中每个 阅读全文
posted @ 2019-03-22 14:26 柚子味儿的西瓜 阅读(13) 评论(0) 推荐(0)
摘要:单例的创建方式: 1、饿汉式:类初始化的时候,会立即加载该对象,线程天生安全,调用效率高。 2、懒汉式:类初始化时,不会初始化该对象,真正需要使用的时候才会去创建该对象,具备懒加载功能。 3、静态内部类方式:结合了懒汉式和饿汉式各自的优点,真正需要对象的时候才会加载,加载类是线程安全的。 4、枚举单 阅读全文
posted @ 2019-02-25 14:17 柚子味儿的西瓜 阅读(12) 评论(0) 推荐(0)