本文共 857 字,大约阅读时间需要 2 分钟。
设计模式解决问题得到方案,学习现有的模式可以做到经验复用。拥有设计模式的词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。
创建型:
单例模式:确保一个类只有一个实例,并提供该实例的全局访问点。
简单工程模式:在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口;(提供一个product的通用接口,其余产品实现这个接口;工厂中用type通过if语句来判断实现哪一个)
工厂方法模式:定义了一个创建对象的接口,但是由子类决定要实例化哪个类。工厂方法把实例化操作延迟到子类了。(建立一个抽象的工厂类,其余类对其进行继承实现,每一个继承的工厂类实现对应的产品)
抽象工厂模式:提供一个接口,用于创建相关的对象家族。(抽象产品A;产品A继承抽象产品; 抽象工厂A; 工厂A继承抽象工厂A )
面试题目:工厂方法模式和抽象工厂模式有什么区别吗?
工厂方法模式:是一个抽象类的工厂,每一个工厂继承加工一种产品;
抽象工厂方法模式:是一个抽象类的工厂,每一个工厂的继承之前 加工不止一种的产品;产品也是抽象的。
行为型:
观察者模式:定义对象之间的一对多依赖关系,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态;
模板方法: 定义算法框架,并将一些步骤的实现延迟到子类。通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。即抽象类。
生产者/消费者模式: 但是生产和消费并不是GOF提出的23种设计模式之一,23种都是建立在面向对象的基础之上的,但其实面向过程的编程中有很多高校的编程模式,生产者消费者模式便是其中之一。生产者和消费者之间通过缓冲区(通常是一个阻塞队列)实现通讯,生产者将产生的数据放入缓冲区,消费者从缓冲区中获取数据。
结构型:
代理模式:控制对其它对象的访问。JDK代理和CGLIB代理。JDK代理是通过接口实现的,CGLIB代理是通过继承其实现子类。
装饰者模式:为对象动态添加功能。(装饰者和具体组件都继承自组件。组件是接口interface)
转载地址:http://acwdf.baihongyu.com/