设计模式——Strategy模式
设计模式——Observer模式
设计模式——Bridge模式
设计模式——Decorator模式
设计模式——Adapter模式
设计模式——Facade模式
设计模式——Singleton模式分别阐述每个设计的特点和为什么要用该设计模式?
重点阐述为什么要用该设计模式?
设计模式——Observer模式
设计模式——Bridge模式
设计模式——Decorator模式
设计模式——Adapter模式
设计模式——Facade模式
设计模式——Singleton模式分别阐述每个设计的特点和为什么要用该设计模式?
重点阐述为什么要用该设计模式?
确实,看了这么多讲解、示例,能够感受到这些设计的精妙之处,像楼主列出的设计模式——Bridge模式、设计模式——Decorator模式就非常巧妙,而像设计模式——Adapter模式、
设计模式——Facade模式、设计模式——Singleton模式就很普通,多数人都会想得到。这些模式看看觉得很不错,可实际开发中很难用的上,估计大家用得最多的就是Factory、Builder等几个创建型模式了。其他的基本很难用得上。所以上面有朋友说是"毒药",因为学习这个要花大量的时间和精力、要大量的项目实践经验,但未必能够能够使你应用自如。还有就是项目的大小,复杂程度,也不一定适合使用这些设计模式。
即便如此,我还是要努力去学习,因为我见过深刻理解设计模式的高手,感觉像下棋,你只能想到后5步,他能像到后50步。面向对象不仅仅是一个技术,更是一种思想。深刻理解这种思想需要花很多的努力,对此不以为然的朋友只是因为不能深刻理解,浅尝辄止,所以没有能够感受到设计模式带来的好处。
软件开发中架构应该是最重要的,开发只是一段过程,不是软件项目的全过程,好的架构能够使开发容易,后期维护或需求变更更加容易,对公司可以节省成本,对开发人员可以提高效率。这些好处都是巨大的,这就是为什么架构师拿的钱比你多好几倍。
学习设计模式只是个开始,只是个模仿,目的是掌握面向对象思想,以后能够灵活应用到实际项目中需要更多的实践经验。但没有开始就不可能成功。
所以我认为想要提高自己的水平,学习设计模式还是很有必要。仅仅想和大家探讨探讨,言辞得罪之处请海涵!
还是非常不错的,微软网站可以下载
C#技术群,欢迎大家光临指导!!
群号:26788099
OBSERVER—想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦 观察者模式:观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。
BRIDGE—早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。
ADAPTER—在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我)适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。
FACADE—我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。幸好相机有Facade设计模式,把相机调整到自动档,只要对准目标按快门就行了,一切由相机自动调整,这样MM也可以用这个相机给我拍张照片了。 门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。DECORATOR—Mary过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费肯定玩完,拿出我去年在华山顶上照的照片,在背面写上“最好的的礼物,就是爱你的Fita”,再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦),再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来……,我们都是Decorator,最终都在修饰我这个人呀,怎么样,看懂了吗?装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。
SINGLETON—俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事)单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。
MM某日给了我一个表,上面写着每日必做:洗衣服,做饭,打扫卫生.etc.....
从此之后,MM每次只对我说"你该干嘛去了??"我就得乖乖去做饭或者洗衣服或者拖地....Command模式,把函数层面的任务提升到类的层面,以解除系统的逻辑互联关系和实际连接的设备之间的耦合...可能总结的不对,大家不要见笑...