反方式笔记1

反模式笔记1
    相信如今从事软件行业的人都相当熟悉(或者至少听说过)设计模式的概念,无论是在软件开发环境还是在别的环境中。自己之前也读过《大话设计模式》以及零散的一些设计模式,但什么是反模式呢?

————————设计模式  VS   反模式——————————
     设计模式可以帮助你识别和实现有益的过程、设计和代码,而反模式的作用与模式正好相反,它们让你留意软件开发过程中潜在的各种陷阱与危险,这些东西都可能会导致项目的毁灭。反模式阐明了那些导致开发障碍的负面模式,并包含了经过验证可以把软件开发问题转变成机会的解决方案。
     设计模式的基本要素就是问题及其解决方案,模式中通常会详细阐述问题的上下文环境和影响到该问题解决方案设计的作用力。反模式的核心是两个解决方案,而不是普通设计模式中的一个问题和一个解决方案,第一个解决方案是存在的问题,第二个则是重构方案。

—————————相关扩展——————————————
     面向对象架构的一个关键方面就是适当的划分,划分决策出现在稳定的可复用设计和可天幻设计之间。稳定的设计在系统的整个生命周期内都会一直存在于系统中,而系统中个别的软件模块则可能会被修改、替换或增加。最好把可替换的设计细节放置到配置文件和元数据中。理想情况下,系统层次的接口在活跃的软件开发过程中是保持稳定的,很少会被改变。稳定的接口可以运行并行开发、有效地编写文档,并减少软件被废弃的可能性。
     如果某个对象的接口是独特的,没有其他的实现来支持同一个接口,那么这个接口就是依赖于实现的。在使用第三方供应商提供的接口时,应当通过适当的分层和封装来隔离。
     关于设计选择: 可以通过隔离各种关注点、建立优先级等方式来澄清设计选择,也就是说,把问题划分成多个可解决的元素而不是同时处理所有问题。

————————软件设计层次模型————————————
   
    如果试图在没有总体架构的情况下以零碎部分为基础来开发一个系统,那么随着系统由于需求变化和采用新技术而发展,它会逐渐难以管理。如一个参考的软件设计层次模型:
    对象和类—>微架构—>框架—>应用层—>系统层—>企业层—>全球行业层