23种设计模式详解 如何设计有效问题?
如何设计有效问题?
定好学习计划,养成好的职业习惯!
有人说设计模式是为了弥补Java语言的缺陷,你觉得是这样吗?
看你从哪个层面来看待设计模式!
语言层面
如果你从语言层面来看设计模式,那么这个说法可以说是对的。有部分设计模式是弥补了Java语言上的不足,最明显的就是单例模式。
在Java中本身没有提供单例对象的创建,需要通过单例模式来实现,什么饿汉式,懒汉式,多线程下还要关注DCL,volatile关键字等等,衍生了很多的面试题。
而在现代语言中,很多都提供了创建单例对象的语法,比如Scala,Kotlin的object关键字。
代码设计层面
如果从代码设计层面来看,设计模式提供了一套可复用的代码结构,来解决特定问题。比如,当需要动态化某些可选部分时,可以使用策略模式。当需要一组操作来顺序操作某个对象时,可以使用职责链模式。
架构层面
从架构层面来看,设计模式对组件关系进行了解耦。
假设我们要实现一个文件服务器,有一个UploadService来进行上传操作,可以调用ConvertService对文件进行转换。UploadService属于核心模块「上传模块」,而ConvertService属于非核心模块「转换模块」。
如果UploadService直接去调用ConvertService来执行转换,那么核心模块就依赖了非核心模块。如下图:
非核心模块是相对不稳定的,核心模块是相对稳定的。核心模块依赖了非核心模块会导致核心模块也不稳定。所以可以使用策略模式来解耦:
看箭头的方向,现在转换模块依赖于上传模块,转换模块的变化不会影响上传模块。依赖方向改变了,这就是传说中的「依赖倒置」!
23种设计模式详解 23种设计模式记忆 口诀 设计模式七大原则
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。