设计模式与架构的核心概念乃是抽象
来源:互联网 发布:mac如何卸载java 编辑:程序博客网 时间:2024/06/04 22:04
最近一年来一直在学习设计模式,上周在公司内部听了一个分享,当时一位同事提出设计模式的核心是封装,我强烈不赞同,在我看来设计模式的核心乃是抽象。
君不见,各种开源框架开源项目遍地都是抽象类和接口,每每此时,你心中肯定一万个草泥马在奔腾:是不是有病呀,整这么多接口和抽象类,也不嫌累。其实不是这样的,为了扩展性,这些是必须的。
面对对象的三大原则是:封装、继承、多态。封装就不必说了,但是没有抽象,就没有继承和多态。
设计模式6大原则SOLID,除了单一职责原则,其余五个原则都需要抽象,没有抽象,其他5个原则完全无法实现。
设计模式23种,除了门面模式,每一种模式都需要抽象,没有抽象,23种设计模式也无从实现。
那为什么抽象最重要呢?我们回想一下,设计模式和架构想解决的最关键的问题是什么?是扩展性,是如何快速应对需求的变更。什么样的东西扩展性最强,适用的问题领域最广,当然是抽象的东西。举个例子:我是一个水果,这句话适用的领域就比我是一个苹果适用的领域要广。即越抽象的东西越具备扩展性,前提是你要基于问题领域做好思考,到底可能的扩充方式有哪些,才好预先留好扩充的接口。论及复用,则是作用范围越小的东西越具备复用性。
是什么在谷歌让数千名工程师建立可扩展的系统,是因为他们有非常聪明的工程师像杰夫·迪恩和桑杰·格玛沃特创建了简单,但丰富的抽象,如MapReduce的,SSTable,Protocol Buffer等。是什么让Facebook工程这么支持大规模,是因为专注于核心,同样喜欢抽象和简单,Thrift, Scribe, Hive。是什么让设计人员能够在Quora的有效构建产品,Webnode,Livenode 也是基于同样的理解。
保持核心抽象的简单和减少自定义解决方案,并增加团队熟悉度和对专业知识的抽象。日益普及系统像Memcached,Redis,MongoDB等系统都是降低建立定制存储和缓存系统的必要。团队重点转移到少数核心抽象,而不是分裂在很多临时解决方案,让公共库更稳健,监控更智能,性能更易理解,测试更全面。所有这一切都有助于搭建一个简单的系统,降低操作负担。
对设计模式来说,各种设计模式的难点在于如何设计它的抽象层的方法。
- 设计模式与架构的核心概念乃是抽象
- 面向对象开发与面向对象设计模式的几个核心的思想和概念 -java
- 软件的架构与设计模式
- 软件架构设计的思想与模式
- 设计模式与架构的一些话
- Android的架构与设计模式
- 设计模式的概念
- 设计模式的概念
- 设计模式的概念
- 设计模式(4)-抽象工厂模式及抽象工厂与工厂模式的区别
- 设计模式与架构设计
- 微服务架构设计(一):核心概念&从既有的架构迁移到微服务的策略
- 【收藏】软件的架构与设计模式之什么是架构
- 【收藏】软件的架构与设计模式之什么是架构
- 软件的架构与设计模式之什么是架构
- 软件的架构与设计模式之什么是架构
- CSA: 软件的架构与设计模式之什么是架构
- 软件的架构与设计模式之什么是架构
- 【Unity】新的UI系统技巧
- jQuery中map和each的用法(jquery-1.12.1.js)
- 软中断,tasklet和工作队列的区别与联系
- pushdo
- 强大的矩阵奇异值分解(SVD)及其应用
- 设计模式与架构的核心概念乃是抽象
- 用url请求数据并用pull解析
- 神经网络优化算法选择
- imageview 自定义
- Android系统中自定义按键的短按、双击、长按事件
- HDU 2642 树状数组
- Div span 标签详解
- AssetBundle资料整理
- Spring源码深度解析(八)解析及注册BeanDefinitions