| |||||
|
src="http://aosustudio.com.cn//Upload/Articles/070325/fd048511-18fd-4b65-a776-a48ec09fc11d/2953034e-a94f-4133-bd82-ef9962acdcad.html" frameborder="0" width="100%" scrolling="no" height="270"> | |||||
|
本文将介绍以下内容: • 设计模式(Design & Pattern)
本文涉及以下技术: 面向对象、设计模式
引言 设计模式是面向对象思想的集大成,GOF在其经典著作中总结了23种设计模式,又可分为:创建型、结构型和行为型3个大类。对于软件设计者来说,一般的过程就是在熟练掌握语言背景的基础上,了解类库的大致框架和常用的函数和接口等,然后多再在百般锤炼中,提高对软件设计思想的认识。 软件设计者要清楚自己的定位和方向,一味的沉溺于技术细节的思路是制约个人技术走向成熟的毒药。因此,学习软件设计,了解软件工程,是每个开发人员必备的一课。笔者在此不想详细的描述各个设计模式的细节,我想google和baidu上的资料已经多如牛毛了。而且,争取的学习方法也不是了解所有的设计模式就可以无敌于天下。我所强调的学习方法就是在熟练掌握基本要素的基础上,了解大致的框架。这一条不仅是学习类库的方法,对设计模式来说是可行的。同时,切记的是在平时的积累中,不断的体会和实践。因此,本文的目的就是将23种模式中,必须掌握的几个最关键、最常用的设计模式,做以总结和简述。 1 Factory Pattern 上榜理由:将程序中创建对象的操作,单独出来处理,大大提高了系统扩展的柔性,接口的抽象化处理给相互依赖的对象创建提供了最好的抽象模式。 推荐热贴: .NET设计模式(3):抽象工厂模式(Abstract Factory) 2 Facade Pattern 上榜理由:将表现层和逻辑层隔离,封装底层的复杂处理,为用户提供简单的接口,这样的例子随处可见。门面模式很多时候更是一种系统架构的设计,在我所做的项目中,就实现了门面模式的接口,为复杂系统的解耦提供了最好的解决方案。 设计模式解析之——Facade模式(k_eckel转自微软高校博客K_eckel's mindview) 3 Command Pattern 上榜理由:将请求封装为对象,从而将命令的执行和责任分开。通常在队列中等待命令,这和现实多么的相似呀。如果你喜欢发号施令,请考虑你的ICommond吧。 推荐热贴:Command模式应用实践 .NET设计模式(17):命令模式(Command Pattern) 4 Strategy Pattern 上榜理由:策略模式,将易于变化的部分封装为接口,通常Strategy 封装一些运算法则,使之能互换。Bruce Zhang在他的博客中提到策略模式其实是一种“面向接口”的编程方法,真是恰如其分。 5 Iterator Pattern 上榜理由:相信任何的系统中,都会用到数组、集合、链表、队列这样的类型吧,那么你就不得不关心迭代模式的来龙去脉。在遍历算法中,迭代模式提供了遍历的顺序访问容器,GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。.NET中就是使用了迭代器来创建用于foreach的集合。 NET设计模式(18):迭代器模式(Iterator Pattern) 6 Adapter Pattern 上榜理由:在原类型不做任何改变的情况下,扩展了新的接口,灵活且多样的适配一切旧俗。这种打破旧框框,适配新格局的思想,是面向对象的精髓。以继承方式实现的类的Adapter模式和以聚合方式实现的对象的Adapter模式,各有千秋,各取所长。看来,把它叫做包装器一点也不为过, 推荐热贴:《让僵冷的翅膀飞起来》系列之二——从实例谈Adapter模式 .NET设计模式(8):适配器模式(Adapter Pattern) 7 Observer Pattern 上榜理由:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。观察者和被观察者的分开,为模块划分提供了清晰的界限。在.NET中使用委托和事件可以更好的实现观察者模式,事件的注册和撤销不就对应着观察者对其对象的观察吗? 推荐热贴:.NET实用设计模式:观察者模式(Observer) .NET设计模式(19):观察者模式(Observer Pattern) 8 Bridge Pattern 上榜理由:把实现和逻辑分开,对于我们深刻理解面向对象的聚合复用的思想甚有助益。 推荐热贴:.NET设计模式(9):桥接模式(Bridge Pattern) 9 Singleton Pattern 上榜理由:改善全局变量和命名空间的冲突,可以说是一种改良了的全局变量。这种一个类只有一个实例,且提供一个访问全局点的方式,更加灵活的保证了实例的创建和访问约束。.NET Frameeork已经封装了Singleton类,我们拿来即可。 推荐热贴:从C#的Singleton设计模式 .NET设计模式(2):单件模式(Singleton Pattern)
总结 仁者见仁。以上只是笔者一家之言,更重要的真知灼见皆来源于实践,设计思想和模式的应用也来源于不断的学习和反复,我也将一如既往。此文只是开端,未来才是不断的探索。 建议 1 不要拿着GOF的书,从头看到尾,对我来说那是圣经也是字典; 2 在软件设计中体会设计模式,设计就是不断的由需求生成的重构; 3 结合.NET Framework框架来学习设计模式在.NET中的应用,对我们这样的菜鸟来说是一举两得的事,即体味了设计,又深谙了框架; 4 把体会拿来共享。 致谢 感谢GOF: Erich Gamma、Richard Helm、Ralph Johnson 和John Vlissides,他们是经典; 感谢Bruce Zhang、TerryLee、idior等的贡献。他们是博客园的榜样。 参考文献 James W. Cooper,《C#设计模式》 刘艺,《Delphi设计模式》 GOF,《设计模式:可复用面向对象软件的基础》 | |||||
| |||||
|
src="http://aosustudio.com.cn/ad/GoogleSerch.htm" frameborder="0" width="100%" scrolling="no" height="30"> | |||||
相关推荐
.NET 开发中最常用的设计模式
设计模式是软件开发人员在开发过程中面临的常见问题的一组最佳实践和解决方案。这些模式通常是可重用的,并且可以应用于不同的项目。设计模式不是语言功能或库,而是一种组织代码以使其更易于维护、可扩展和可重用的方式。它们通常分为三种类型:创造模式、结构模式和行为模式。创建模式处理对象创建机制,尝试以适合情况的方式创建对象。结构模式处理对象组成,行为模式处理对象之间的通信。
.NET 23种设计模式
创建型 1. Factory Method(工厂方法) 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 适用性: 当一个类不知道它所必须创建的对象的类的时候。 当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类
.net之设计模式
在上一篇文章里我通过具体场景总结了“.net面向对象的设计原则”,其中也多次提到一些设计模式方面的技术,可想而知,设计模式在我们的开发过程中也是必不可少的。今天我们就来简单交流下设计模式。对于设计模式的介绍呢,网上流行这么一句话“想要搞好对象,必须要熟知套路”,所以百度中说设计模式简介时“设计模式一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结”一点也没错,在开发过程中通过渗入一些设计模式,我们的设计效果又会怎么样呢?话不多说,直接进入正题吧! 一、设计模式的分类 ...
ASP.NET Core中的设计模式
ASP.NET Core,作为微软推出的跨平台、高性能的开源框架,广泛应用于Web应用开发。在ASP.NET Core的设计和实现中,运用了许多经典的设计模式,以提高代码的可维护性、可扩展性和灵活性。本文将深入探讨ASP.NET Core中常见的设计模式,并通过实例代码进行说明。1. MVC(模型-视图-控制器)模式MVC是ASP.NET Core中最基本也最重要的设计模式之一。它将应用程序的用户...
设计模式大全
Longronglin之设计模式:Christopher Alexander 说过:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。模式描述为:在一定环境中解决某一问题的方案,包括三个基本元素--问题,解决方案和环境。阅读类图和对象图请先学习UML创建模式 结构模式 行为模式创建模式:对类
设计模式六大原则——里氏替换原则(LSP)
概述 里氏替换原则(LSP,Liskov Substitution Principle)是关于继承机制的原则,是实现开放封闭原则的具体规范,违反了里氏替换原则必然违反了开放封闭原则。 引经据典
★帮你免于失业的十大软件技术
罗素•琼斯,执行编辑 2002年12月11日 我不知道你的具体工作是什么。如果你是某冷门领域的专家而变得不可或缺,或者你们的公 司十分稳固,以你现有的技术就足以安度你的职业生涯,那我不知道你是否有失业的危险。 不管怎样,请你先不要急着寄出那些告诉我你们的公司对用VB3十分满意或你们除C以外永不 用其它语言的信件,并保留起那些讲述.NET将如何把Java扫地出门、XML将
(转)《对vc的批判!》
★原文转载自CLanguage版akowa的《对vc的批判!》★1.我这人喜欢偷懒,VC我断断续续学过很长的时间,最终没有能成为我想成为的那种高手,在“程序人生”中的一个贴子《怎样克服学习过程中的浮躁,来者有分》(http://www.csdn.net/expert/topic/635/635462.xml?temp=.8159601)中我看到有很多人都说VC难学,信然!拿我来说,最终真正派上
工作中使用到的单词(软件开发)
1.エイリアス alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート promote 促进,提升 开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................
1024,20个入行故事,浮世中见证着程序员的奋斗(2)
看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题。注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友互联网工程师必备的面试1000题而且从上面三家来看,算法与数据结构是必备不可少的。
Spring干货---AOP
springAOP
最近学习的知识分享!DDD雏形
最近学习的知识分享!DDD雏形 最近工作感到高兴的是,接触到了我们公司的平台。虽然配置有些复杂,可能对于我是一个刚接触平台的人来说。在这期间也学习到了一些开发思想。那就是关于领域驱动开发的一些知识.如果我有说的不对的地方请指教,嘿嘿。 只所以写...
IT人的素质 & 设计杂谈
IT 人应具备的一些素质 分享。乐于分享,才能共同成长。 开放 & 空杯心态,接受新事物。 没有实践就没有发言权。 没有彻底理解,不要去推翻它。 不要抨击其它你认为没有意义的技术,任何事物都有它产生的原因。 不要看不起老技术。只有站在巨人的肩膀上,你才能看得更远。 认识到:业务是收益、技术是成本。 设计杂谈 如何做到方案设计得比较完善?答:一项浩大的方案...
Android 7系统网络(三)Native层(上)—netd守护进程与CommandListener
源码路径class main关键设计:所有 Socket 都是stream类型(TCP),而不是dgram(UDP)。netd 的命令协议基于文本行,需要可靠的面向连接传输。Socket类型权限用途netdFramework 控制通道dnsproxydDNS 代理mdns多播 DNS (mDNS)fwmarkdfwmark 设置netlink 是 Linux 中内核与用户态通信的一种机制。内核 用户态 (netd)│ ││ 接口 wlan0 UP ││ ↓ │。
基于HarmonyOS ArkTS API 24通过new PhotoItem(p)创建一个新的对象并替换数组中的原对象
在任何一个设计精良的应用中,色彩系统都是视觉一致性的基石。bg: string;这段代码定义了一个名为的接口,它包含了11个色彩字段,每个字段都对应应用界面中的一个特定功能角色。primary:主色调,通常用于页面头部、重要按钮等视觉重心区域。在本应用中,主色调选用了深棕色#3E2C23,既呼应了胶片暗房的氛围,又能提供足够的视觉对比度。brown:辅助棕色,用于次级强调元素,如标签背景、评分星星等,与主色调形成层次关系。bg:页面背景色,选用奶油色#F3EBDD。

3110




被折叠的 条评论
为什么被折叠?



