此文为修改转载:
设计模式是面向对象思想的集大成,GOF在其经典著作中总结了23种设计模式,又可分为:创建型、结构型和行为型3个大类。对于软件设计者来说,一
般的过程就是在熟练掌握语言背景的基础上,了解类库的大致框架和常用的函数和接口等,然后多再在百般锤炼中,提高对软件设计思想的认识。
软件设计者要清楚自己的定位和方向,一味的沉溺于技术细节的思路是制约个人技术走向成熟的毒药。因此,学习软件设计,了解软件工程,是每个开发人员必备的
一课。笔者在此不想详细的描述各个设计模式的细节,我想google和baidu上的资料已经多如牛毛了。而且,争取的学习方法也不是了解所有的设计模式
就可以无敌于天下。我所强调的学习方法就是在熟练掌握基本要素的基础上,了解大致的框架。这一条不仅是学习类库的方法,对设计模式来说是可行的。同时,切
记的是在平时的积累中,不断的体会和实践。因此,本文的目的就是将23种模式中,必须掌握的几个最关键、最常用的设计模式,做以总结和简述。
1 Factory Pattern
上榜理由:将程序中创建对象的操作,单独出来处理,大大提高了系统扩展的柔性,接口的抽象化处理给相互依赖的对象创
建提供了最好的抽象模式。
2 Facade Pattern
上榜理由:将表现层和逻辑层隔离,封装底层的复杂处理,为用户提供简单的接口,这样的例子随处可见。门面模式很多时候
更是一种系统架构的设计,在我所做的项目中,就实现了门面模式的接口,为复杂系统的解耦提供了最好的解决方案。
3 Command Pattern
上榜理由:将请求封装为对象,从而将命令的执行和责任分开。通常在队列中等待命令,这和现实多么的相似呀。如果你喜欢
发号施令,请考虑你的ICommond吧。
4 Strategy Pattern
上榜理由:策略模式,将易于变化的部分封装为接口,通常Strategy 封装一些运算法则,使之能互换。Bruce Zhang在他的博
客中提到策略模式其实是一种“面向接口”的编程方法,真是恰如其分。
5 Iterator Pattern
上榜理由:相信任何的系统中,都会用到数组、集合、链表、队列这样的类型吧,那么你就不得不关心迭代模式的来龙去脉。
在遍历算法中,迭代模式提供了遍历的顺序访问容器,GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个
元素,而又不需暴露该对象的内部细节。.NET中就是使用了迭代器来创建用于foreach的集合。
6 Adapter Pattern
上榜理由:在原类型不做任何改变的情况下,扩展了新的接口,灵活且多样的适配一切旧俗。这种打破旧框框,适配新格局的
思想,是面向对象的精髓。以继承方式实现的类的Adapter模式和以聚合方式实现的对象的Adapter模式,各有千秋,各取所长。
看来,把它叫做包装器一点也不为过,
7 Observer Pattern
上榜理由:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新
。观察者和被观察者的分开,为模块划分提供了清晰的界限。在.NET中使用委托和事件可以更好的实现观察者模式,事件的注册
和撤销不就对应着观察者对其对象的观察吗?
8 Bridge Pattern
上榜理由:把实现和逻辑分开,对于我们深刻理解面向对象的聚合复用的思想甚有助益。
9 Singleton Pattern
上榜理由:改善全局变量和命名空间的冲突,可以说是一种改良了的全局变量。这种一个类只有一个实例,且提供一个访问全
局点的方式,更加灵活的保证了实例的创建和访问约束。.NET Frameeork已经封装了Singleton类,我们拿来即可。
转载结束!!!
这九个最基本的设计模式,也许很多朋友都看过介绍,而且自己练习过;但是对于设计师,什么时候用哪种模式?这才是最核心的,而且不一定适合的场合就一定要用模式,还要兼顾与统筹!!! 总之,要多在实践中体会才能不断进步。
分享到:
相关推荐
首先,我们来看设计模式的基本概念。设计模式是对在特定上下文中反复出现的问题及其解决方案的一种描述,它不直接解决编程问题,而是提供了一种通用的、可复用的设计方案。设计模式分为三大类:创建型模式(如单例、...
《设计模式学习笔记》主要探讨了GOF的23种设计模式以及类设计的基本原则,旨在帮助开发者理解和应用这些经过时间验证的成熟解决方案。设计模式是面向对象软件设计中的核心概念,它们为解决常见的设计问题提供了标准...
首先,我们来了解一下设计模式的基本概念。设计模式是面向对象设计中的一种模板,它描述了在特定上下文中反复出现的问题以及该问题的解决方案。这些解决方案已经被广泛验证,可以提高代码的可读性、可维护性和复用性...
在《深入设计模式》一书中,作者首先介绍了面向对象程序设计的基本概念,包括类(Class)、对象(Object)、继承(Inheritance)、封装(Encapsulation)、多态(Polymorphism)等核心概念。 - **类(Class)**:类是具有相似...
书中首先介绍了嵌入式编程的基本概念,包括嵌入式系统的特殊性、编程范式的选择(面向对象与结构化编程),并进一步深入到实时系统的编程过程。在嵌入式实时过程的设计中,Harmony过程被用作一种编程范式,以应对...
在本课程设计中,我们将基于设计模式来构建一个画图程序。设计模式是软件工程中的一种最佳实践,它提供了一种解决常见问题的标准化方法,...对于学习和理解设计模式及其在实际项目中的应用,这是一个很好的实践案例。
在Java编程语言中,集合和三层设计模式是两个非常重要的概念,对于开发高效、可维护的软件系统至关重要。本文将详细探讨这两个主题。 首先,我们来了解Java中的集合。Java集合框架是Java SE API的一个核心部分,它...
初级程序员可以学习设计模式的基本概念和应用,高级程序员能够从书中掌握更多高级技巧,而系统分析师可以通过设计模式来解决项目中遇到的复杂问题。 总体而言,设计模式是软件工程领域的宝贵财富,而《JAVA设计模式...
首先,我们需要理解设计模式的基本分类。设计模式通常分为三类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建,如单例模式、工厂模式和建造者模式,它们旨在提供一种灵活的、抽象的对象创建方式。...
本书首先会介绍设计模式的基本理念,让读者理解为何需要使用设计模式,以及它们如何帮助我们编写更加灵活、可扩展的代码。 创建型设计模式包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。这些...
首先,我们要了解设计模式的基本分类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建过程,如单例模式、工厂模式、抽象工厂模式、建造者模式和原型模式。这些模式提供了灵活的创建对象的方式,使得...
通过阅读《系统架构设计师 设计模式》这本PDF教程,考生不仅可以了解每个设计模式的基本概念,还能学习到如何在实际项目中选择和应用适当的模式,以及如何评估设计模式的效果。此外,书中可能还会包含案例分析和练习...
本资源包含一个PDF文档和一个TXT文本文件,两者都详细介绍了Java设计模式的基本概念和实际应用。 首先,设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建过程,如单例模式...
《HeadFirst设计模式学习笔记1--策略模式Demo》 在软件工程中,设计模式是一种解决常见问题的标准方案,它提供了一种在特定情况下组织代码的模板。策略模式是设计模式中的一种行为模式,它允许在运行时选择算法或...
它们是经验的总结,是前人智慧的结晶,通过学习和应用设计模式,我们可以避免重复发明轮子,使代码更符合面向对象设计的原则。 在第1章,通常会介绍设计模式的基本概念,包括模式的分类(如创建型、结构型和行为型...
1. 基本设计模式(Fundamental Design Patterns)可能包含一些通用但至关重要的模式,如代理(Proxy),它提供了一种替代或代表原始对象的方式,可以用于控制访问、实现远程代理或提供懒加载等。 2. 创建型模式...
首先,我们要理解设计模式的基本概念。设计模式不是代码,而是一种描述在特定情况下,如何设计和实现软件组件的经典解决方案。它们源于实际的编程经验,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides...
了解和应用设计模式可以帮助开发者写出更加清晰、可维护和可扩展的代码。 首先,我们来讨论面向对象编程(Object-Oriented Programming,简称OOP)的概念。面向对象是一种编程范式,它使用“对象”来设计软件系统。...
首先,我们要理解设计模式的基本分类。设计模式通常分为三类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)和行为型模式(Behavioral Patterns)。创建型模式关注对象的创建过程,如单例...
设计模式、框架及其实践...总而言之,《设计模式、框架及其实践》是一本深入浅出的书籍,旨在帮助读者通过学习和理解设计模式,提升软件设计水平,从而能够更好地应对复杂系统的挑战,构建可扩展、可维护的高质量软件。