1、设计模式心得体会 设计模式心得体会(2): 从一开始学习设计模式至今已半年有余了,第一次接触设计模式是一次不经意间在网上看到大话设计模式一书,看了前言了第一章后,就感觉到其诱惑力对于一个程序员来说,是无比巨大的。大概是去年十月份的时候,部门决定成立读书会,系统学习设计模式。 通过学习设计模式,除了学习到一些设计模式,还让我进一步熟悉、巩固了面向对象思想,进一步熟悉了cX语言。我曾多次设想,我们如果引入面向对象思想,并结合设计模式来重写或改善我们的系统(必须重写,虽说设计模式只是一种思想,语言只是实现而已,但是选择一门好的语言,无疑也是非常重要的,而vb6在面向对象方面却有很大欠缺甚至不具备其条
2、件),那么我们的系统将会像目前一样需要那么多人来维护吗。大话设计模式一书其实是对gof的设计模式可复用面向对象软件的基础一书的翻译,让人更容易理解,用通俗易懂的语言阐述软件设计过程中的一些模式,在某种特定环境下,用最好的设计方法(代码高内聚,低耦合,使其有良好的可扩展性和可维护性)达到我们的目的,或许其方法有很多很多,但是寻找到最好的方法却不是件容易的事,设计模式是对前人的设计经验的一个总结,告诉我们在某种特定的环境下,这样的设计师最好的,学习设计模式有助于我们在设计软件的过程中少走很多弯路。 我对gof的23个设计模式虽然都有看过,但是只有理解,实现,应用及思考之后,才能真正体会其精妙之处,
3、至今体会较深的有以下几个模式: 1.strategy封装系列算法,让它们之间可以相互替换,算法并不是单指数据结构中的算法,在实践中,它几乎可以封装任何类型的规则,这使得策略模式的运用极其广泛; 2.templatemethod有人说是用的做多的模式,只要有抽象类的地方,都可以看到这个模式,它通过把不变行为移到父类中去,去除子类中的重复代码,从而提供了一个很好的代码复用平台; 3.facade提供了对基础架构的统一访问,减少复杂性,在web编程者中的三层架构,就是此思想,每一层都封装好一部分功能,提供给上一层统一的方法调用,整个framework体系就是facade模式的封装,随着1.0升级到3
4、.5,越来越多复杂的高级功能被封装,可以说facade无处不在; 4.abstractfactory提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类,咋一看,太抽象了,说个例子,在三层架构中,bll层对dal层的调用会直接用到dal层中的类,如果dal层是分别对sqlserver,oracle的访问,bll层需要根据实际情况决定实例化哪一个dal层中的类,我们又希望在两种dal层切换时,bll层和ui层都不做改变,那么可在bll层和dal层中增加接口层(体现了抽象的精神,或者说是面向接口编程的最佳体现)和抽象工厂(dalfactroy),让它来实例化dal层中的实例; 5.singleton确保一个类仅有一个实例,并提供一个访问它的全局访问点,如单件窗体,点一下menu,弹出一个窗体(实例),在关闭这个新窗体之前,再次点击该menu,不会再次出现同样的弹出窗体(实例)。篇幅有限,其他模式或多或少都有点感觉。 最后,引用设计模式解析书中的一句话。设计模式体现的是一种思想,而思想是指导行为的一切,理解和掌握了设计模式,并不是说记住了23种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财富),实际接受的是一种思想的熏陶和洗礼,等这种思想融入到了你的思想中后,你就会不自觉地使用这种思想去进行你的设计和开发,这一切才是最重要的。第3页 共3页