.net设计模式入门
2006-06-27 11:59
330 查看
现在软件设计里到处都是模式,框架。有次朋友问什么是模式?我也在学习中,就我的学习经验,给出以下小结。(注意:个人观点,仅 供参考,欢迎指正。)
1.什么是模式?
模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。
Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核 心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。
模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,自然会出现很多模式。
什么是框架?
框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好 的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。
2.为什么要用模式?
因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会 得到解决问题的最佳办法。
为什么要用框架?
因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架, 就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很 多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且 它是不断升级的,你可以直接享受别人升级代码带来的好处。
框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。
软件为什么要分层?
为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源…总之好处很多啦:)。
3.以下所述主要是JAVA,J2EE方面的模式和框架:
常见的设计模式有什么?
首先,你要了解的是GOF的《设计模式--可复用面向对象软件的基础》一书(这个可以说是程序员必备的了),注意:GOF不 是一个人,而是指四个人。它的原意是Gangs Of Four,就是“四人帮”,就是指此书的四个作者:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides。这本书讲了23种主要的模式,包括:抽象工厂、适配器、外观模式等。
还有其他的很多模式,估计有100多种。
软件设计模式太多,就我的理解简单说一下最常见的MVC模式。
MVC模式是1996年由Buschmann提出的:
模型(Model):就是封装数据和所有基于对这些数据的操作。
视图(View):就是封装的是对数据显示,即用户界面。
控制器(Control):就是封装外界作用于模型的操作和对数据流向的控制等。
另外:
RUP(Rational Unified Process)软件统一过程,XP(Extreme Programming)极端编程,这些通常被叫做“过程方法”,是一种软件项目实施过程的方法论,它是针对软件项目的实施过程 提出的方法策略。也是另一个角度的模式。
----------------------------------------------------------------------------------------------------------
简单工厂模式(Simple Factory)简单工厂模式是类的创建模式,又叫做静态工程方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例.简单工程模式涉及到工厂角色,抽象产品角色以及具体产品角色等三个角色(1)工厂类角色(Creator):担任这个角色的是工厂方法模式的核心,含有与应用紧密相
关的商业逻辑.工厂类在客户端的直接调用下创建产品对象,它往往由一个具体类实现(2)抽象产品角色(Product):担任这个角色的类是由工程方法模式所创建的对象的父
类,或它们共同拥有的接口.抽象产品角色可以用一个接口或抽象类实现.(3)具体产品角色(Concrete Product)角色:工程方法模式所创建的任何对象都是这个
角色的实例,具体产品角色是由一个具体类实现.优点:简单工厂模式的核心是工厂类.这个类含有必要的判断逻辑,可以决定在什么时候创建
哪一个产品类的实例.而客户端则可以免除直接创建产品对象的责任,而仅仅负责消
费产品.简单工厂模式通过这种做法实现了对责任的分割.缺点:(1)当产品类有复杂的多层次等级结构时,工厂类只有它自己.以不变应万变,就是模式
的缺点.
(2)这个工厂类集中了所有的产品创建逻辑,形成一个无所不知的全能类,有人把这种类叫做上帝类(God Class).如果这个全能类不能正常工作了,整个程序都会受到影响.
(3)将这么多的逻辑集中放在一个类里面的另外一个缺点是,当产品类有不同的接口种
类时,工厂类需要判断在什么时候创建某种产品.这种对时机的判断和对哪一种具体产
品的判断逻辑混合在一起,使得系统在将来进行功能扩展时较为困难.
(4)由于简单工厂模式使用静态方法作为工厂方法,而静态方法无法由子类继承,因此,
工程角色无法形成基于继承的等级结构.上述缺点在工厂方法模式中得到克服.
--------------------------------
1.什么是模式?
模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。
Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核 心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。
模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,自然会出现很多模式。
什么是框架?
框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好 的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。
2.为什么要用模式?
因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会 得到解决问题的最佳办法。
为什么要用框架?
因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架, 就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很 多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且 它是不断升级的,你可以直接享受别人升级代码带来的好处。
框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。
软件为什么要分层?
为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源…总之好处很多啦:)。
3.以下所述主要是JAVA,J2EE方面的模式和框架:
常见的设计模式有什么?
首先,你要了解的是GOF的《设计模式--可复用面向对象软件的基础》一书(这个可以说是程序员必备的了),注意:GOF不 是一个人,而是指四个人。它的原意是Gangs Of Four,就是“四人帮”,就是指此书的四个作者:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides。这本书讲了23种主要的模式,包括:抽象工厂、适配器、外观模式等。
还有其他的很多模式,估计有100多种。
软件设计模式太多,就我的理解简单说一下最常见的MVC模式。
MVC模式是1996年由Buschmann提出的:
模型(Model):就是封装数据和所有基于对这些数据的操作。
视图(View):就是封装的是对数据显示,即用户界面。
控制器(Control):就是封装外界作用于模型的操作和对数据流向的控制等。
另外:
RUP(Rational Unified Process)软件统一过程,XP(Extreme Programming)极端编程,这些通常被叫做“过程方法”,是一种软件项目实施过程的方法论,它是针对软件项目的实施过程 提出的方法策略。也是另一个角度的模式。
----------------------------------------------------------------------------------------------------------
简单工厂模式(Simple Factory)简单工厂模式是类的创建模式,又叫做静态工程方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例.简单工程模式涉及到工厂角色,抽象产品角色以及具体产品角色等三个角色(1)工厂类角色(Creator):担任这个角色的是工厂方法模式的核心,含有与应用紧密相
关的商业逻辑.工厂类在客户端的直接调用下创建产品对象,它往往由一个具体类实现(2)抽象产品角色(Product):担任这个角色的类是由工程方法模式所创建的对象的父
类,或它们共同拥有的接口.抽象产品角色可以用一个接口或抽象类实现.(3)具体产品角色(Concrete Product)角色:工程方法模式所创建的任何对象都是这个
角色的实例,具体产品角色是由一个具体类实现.优点:简单工厂模式的核心是工厂类.这个类含有必要的判断逻辑,可以决定在什么时候创建
哪一个产品类的实例.而客户端则可以免除直接创建产品对象的责任,而仅仅负责消
费产品.简单工厂模式通过这种做法实现了对责任的分割.缺点:(1)当产品类有复杂的多层次等级结构时,工厂类只有它自己.以不变应万变,就是模式
的缺点.
(2)这个工厂类集中了所有的产品创建逻辑,形成一个无所不知的全能类,有人把这种类叫做上帝类(God Class).如果这个全能类不能正常工作了,整个程序都会受到影响.
(3)将这么多的逻辑集中放在一个类里面的另外一个缺点是,当产品类有不同的接口种
类时,工厂类需要判断在什么时候创建某种产品.这种对时机的判断和对哪一种具体产
品的判断逻辑混合在一起,使得系统在将来进行功能扩展时较为困难.
(4)由于简单工厂模式使用静态方法作为工厂方法,而静态方法无法由子类继承,因此,
工程角色无法形成基于继承的等级结构.上述缺点在工厂方法模式中得到克服.
--------------------------------
相关文章推荐
- .net设计模式之普通工厂模式
- .NET设计模式(18):迭代器模式(Iterator Pattern)
- .NET设计模式(23): 职责链模式(Chain of Responsibility Pattern)
- .NET设计模式(1):1.1 单例模式(Singleton Pattern)
- .Net中的设计模式——从实例谈OOP、工厂模式和重构 http://www.cnblogs.com/wayne-ivan/archive/2006/09/07/496920.html
- 走向.NET架构设计―第五章―业务层模式,原则,实践(前篇)
- .NET设计模式(3):抽象工厂模式(Abstract Factory)(转)
- 步步为营 .NET 设计模式学习笔记 六、Adapter(适配器模式)
- .NET设计模式(18):迭代器模式(Iterator Pattern)(转)
- .NET设计模式系列文章
- .NET设计模式开篇
- .NET领域驱动设计—初尝(疑问、模式、原则、工具、过程、框架、实践)
- 写给Python初学者的设计模式入门 .
- .NET反射、委托技术与设计模式
- 步步为营 .NET 设计模式学习笔记 七、Proxy(代理模式
- .NET中的设计模式五:观察者模式
- .NET中的设计模式五:观察者模式 选择自 lane_cn 的 Blog
- 步步为营 .NET 设计模式学习笔记 九、Command(命令模式)
- .NET设计模式(3): 抽象工厂模式
- 步步为营 .NET 设计模式学习笔记 十、Builder(建造者模式)