Java经典设计模式 总览
一、概况
总体来说设计模式分为三大类:
(1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
(2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
(3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
二、设计模式的六大原则
1、开闭原则(Open Close Principle)
开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。
2、里氏代换原则(Liskov Substitution Principle)
其官方描述比较抽象,可自行百度。实际上可以这样理解:(1)子类的能力必须大于等于父类,即父类可以使用的方法,子类都可以使用。(2)返回值也是同样的道理。假设一个父类方法返回一个List,子类返回一个ArrayList,这当然可以。如果父类方法返回一个ArrayList,子类返回一个List,就说不通了。这里子类返回值的能力是比父类小的。(3)还有抛出异常的情况。任何子类方法可以声明抛出父类方法声明异常的子类。
而不能声明抛出父类没有声明的异常。
3、依赖倒转原则(Dependence Inversion Principle)
这个是开闭原则的基础,具体内容:面向接口编程,依赖于抽象而不依赖于具体。
4、接口隔离原则(Interface Segregation Principle)
这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。
5、迪米特法则(最少知道原则)(Demeter Principle)
为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
6、合成复用原则(Composite Reuse Principle)
原则是尽量使用合成/聚合的方式,而不是使用继承。
三、创建型模式
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
四、七种结构型模型
共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。其中的对象的适配器模式是各种结构型模式的起源。
五、十一种行为型模型
行为型模式细分为如下11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
相关文章
- java scanner怎么用_Java中Scanner类的用法及使用步骤分享!「建议收藏」
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java数组去重_JAVA数组去重常用方法
- db4o java,db4o Java版性能测试评估
- java webservice实现_JAVA WebService的实现方式
- java递归和迭代_Java中的迭代与递归
- java 基础语法
- java executeupdate_Java自学-JDBC execute与executeUpdate的区别
- Java生成随机数组_java生成唯一数字
- vscode配置JAVA环境_捷达VS5进取版有哪些配置
- Java类加载问题汇总
- java解释器虚拟机-Java代码如何运行在Java虚拟机中
- 【JAVA】Java 日志打印规范
- Java自带的性能监测工具之jhat
- Oracle终止支持Java:转向新时代(oracle抛弃java)
- Linux下Java开发:给初学者的指引(linux下java编程)
- 处理让Java与Redis协同处理过期对象(redisjava过期)
- 策略Java应用中使用Redis实现数据过期策略(redisjava过期)
- 时间处理处理Redis Java中的过期时间(redisjava过期)
- 互操作Java与Redis缓存互操作实践(redis缓存与java)
- 时间Java设置Redis键值对过期时间(redisjava过期)
- Java并发编程视频分享-第二期
- 实现Java实现的Redis封装类:强化Redis技术支持(redis封装类java)
- 进程Linux下创建多个Java进程的简易方法(linux 多个java)
- Java编程在Linux上的应用(java编程 linux)
- Java Redis一次实现无限数据加速的尝试(用java redis)
- 客户端Java客户端快速关闭Redis连接(关闭redis的java)
- 安装Oracle JDK 从Java进入下一个级别(oracle下载java)
- 史上最全的java随机数生成算法分享