设计模式是什么?
在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案。
模式的定义是相当简单的,但每一个词都有不同的意义。
“……解决方案”
归根结底,设计模式就是一些解决方案(解决办法,解决问题的方式或方法)。
“……特定问题……”
通常一个设计模式仅仅解决某个或某些特定的问题,并不能包治百病。它只是解决“特定问题”的解决方案。
“……重复出现……”
只有解决重复出现的特定问题,才显得有意义。而当问题再次出现时,可以复用这些解决方案。
“……特定环境……”
任何问题的出现是有场景的,不能脱离环境去讨论问题的解决办法。不同的环境,相同的问题,解决办法不一定一样。
“……经过验证的……”
每个人都可以总结出在特定环境下、重复出现的、特定问题的的解决方案,但并不都算上是设计模式。而应该有足够的应用来验证,并且得到大家的认可和公认。
“在软件开发中……”
各行各业都存在设计模式,接下来要讨论的内容,便是软件开发中的设计模式。
起源
模式起源与建筑领域,哈佛大学的建筑学博士克里斯托弗.亚历山大,与其团队,用了约20年的时间,对住宅和周边环境进行了大量的调查研究,发现人们对舒适住宅和城市环境存在一些共同的认同规律,将它们归纳成253个模式。
建筑模式语言(上下)
诞生
GoF将模式的概念引入软件工程领域,著有《Design Patterns: Elements of Reusable Object-Oriented Software》(设计模式:可复用面向对象软件的基础),这标志着软件模式的诞生。
设计模式的分类
设计模式分类- 创建型:创建对象的模式,抽象实例化的过程。
- 结构型:讨论类和对象的结构。
- 行为型:关注的是对象的行为,用来解决对象之间的联系问题。
六大原则
总原则
Open Close Principle(开闭原则)
对拓展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。
- Single Responsibility Principle(单一职责)
- Liskov Substitution Principle(里氏替换)
- Dependence Inversion Principle(依赖倒转)
- Interface Segregation Principle(接口隔离)
- Demeter Principle(迪米特法则,最少知道原则)
- Composite Reuse Principle(合成复用)
网友评论