软件设计中的模式

来源:互联网 发布:java打印上箭头 编辑:程序博客网 时间:2024/05/29 09:27

设计模式被认为是面向对象技术的第二代技术,公认的主要有设计模式(design patterns)、反模式(anti-patterns)、实现模式(implementation patterns)。这三方面都有标志性的书籍
Gof 的 “Design Patterns”
William J. Brown, et al. “AntiPatterns”
Kent Beck. “Implementation Patterns”

这三种模式涉及到软件设计的方方面面,而且侧重点也不一样,设计模式侧重于软件架构,反模式侧重于软件管理,实现模式侧重于编码实现。模式是前人在软件开发中的经验总结,给后人留下了宝贵的财富,既然是经验我们就应该学习。除了这三种模式,我觉得编码规范应该也算作一种模式---“编码模式”。

  虽说编码风格并不影响软件的运行效率,但会明显影响代码的可读性,而可读性也是评价代码质量的一个重要标志,Kent Beck把软件可读性放到编程规律的首位,在”Implementation Patterns”: Programms are read more often than they are written. “编码模式”应该是软件设计中最底层的模式,这样反模式、设计模式、实现模式、编码模式就构成了软件设计中自上而下的一个完整的模式层次。

模式不是限制程序员的思维,而是给程序员经验,给程序员提供了现成的问题解决方案,但我们的思路不应该局限于这些模式。在学习与使用模式时我觉得应该有几个过程。
1. 了解模式。首先,应该了解在软件设计中有哪些模式,有哪些前辈给我们留下的经验,要了解这些经验在哪些方面可以帮助我们的软件开发,分别可以应用于什么样的开发场景,这样,当我们遇到熟悉的场景,才会想到前辈已经给我们提供了一些解决方案。
2. 理解模式。我们知道某些模式可以应用于哪些场景,当我们需要它们时,我们就不得必彻底地去理解它,然后应用它。
3. 比较模式。有些模式有很是有些相似的比如Facade和Adapter好像很近似,只有我们深入理解了这些模式,并在应用中体会了它们,通过对这些模式的比较才能更好地区分它们,把合适的模式用到合适的场景中去;并且通过比较来发现模式的局限与缺陷,并在必要是避开或解决这些潜在的问题。
4. 发现模式。当我们有了对模式使用的一些经验,也可以在开发实践中不断探索、总结、发现新的设计模式,为后来者提供更多的解决方案,提高总体的软件生产率。

设计模式应该是软件架构师必备基础吧,在遇到每一个问题时,我们都可以拿出这些已有的解决方案,看是否可以满足我们的需求。如果有多个现成方案都可以满足,再比较哪一个更好,然后再寻找是否会有更好的解决方案,在不断的比较中思考,在不断的思考中进步,在进步中成长才能无愧于岁月。

原创粉丝点击