《XX年设计模式心得体会.pdf》由会员分享,可在线阅读,更多相关《XX年设计模式心得体会.pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、XXXXXXXX 年设计模式心得体会年设计模式心得体会设计模式体验设计模式体验第一部分:7 月初的一个周末,确切地说是7 月 1 日星期六,我在网上看到了一本名为大华设计模式的书,看到了很多好的评论。结果,我下载了电子书并阅读了它。在一次阅读了几章之后,我对设计模式有了一个了解,所以我继续在网上搜索其他资料来进一步了解设计模式。最终结论:设计模式是一件好事,它有多具体?一两句话不能概括。也是从那天开始,我决定学习设计模式。所以我读了大华设计模式。到7 月 10 日,读了 100 多页后,我觉得有点困难,有点看不见。所以我上网寻找其他好方法。我偶然发现了李建中先生关于“c#设计模式串扰”的一系列
2、讲座。微软的网络演播课程主要解释 gof 的 23 种设计模式。每堂课,加上一个头和一个尾,总共有 25 堂课。听完一节课,感觉很有用。因此,我会在阅读的同时花时间去上课,并在我的博客上写下笔记。通过加深我的印象,我可以促进我的进步。在过去的三个月里,我终于学会了设计模式。最初的计划是在两个月内学会,因为。花了三个月的时间计划在两个月内完成这项研究。我感受了很多,也收获了很多我对 c#语言有了进一步的理解,对面向对象思想有了更全面的理解。设计模式下一步的计划:整合并应用设计模式来整合:“大化设计模式”、“设计模式”、“设计模式可重用面向对象基础”、“敏捷软件开发:原则、模式和实践”这些书结合起
3、来有一个系统的外观,当然我会买一些我手头没有的关于设计模式的书。使用:几天前,系里还提倡用c#修改 vb 程序。我认为这是一个非常好的平台,它只是有机会将理论应用于实践。理论加实践是唯一的学习方法。以下是每种模式的简要总结:1、创建模式:单件:它解决了实例化对象的数量问题,如工厂、抽象工厂中的对象池等。除了单例模式,其他创建的模式解决了新模式带来的耦合关系。抽象工厂:创建一系列相互依赖的对象,并在运行时更改这些对象。工厂:创建一个单独的对象,用于抽象工厂。原型:通过复制原型创建一个新对象。工厂、抽象工厂、构建器都需要一个额外的工厂类来实例化“边对象”,而原型通过原型克隆“可变对象”。如果您遇到
4、“可变类”,最初的设计通常从工厂开始,当您遇到更复杂的变化时,您将考虑重新配置成其他三种工厂模式。2、结构模式适配器:专注于转换接口,使不兼容的接口适应对象,以及使用旧代码重用、类库迁移等。桥:注意抽象和实现的分离,支持对象的多维变化。xxposite:注意协议接口,将“一对多”关系转化为“一对一”关系,屏蔽对象容器的内部实现结构,实现对象和对象容器使用的一致性。装饰师:注意稳定界面,在此前提下为对象扩展功能,实现对象功能的扩展,避免子类的扩展。外观:专注于简化接口,屏蔽每个子系统的复杂性,并为客户提供更高级别的接口。飞行重量:专注于使用共享技术保留界面和优化内部图像存储。代理:注意接口的使用
5、,增加间接代理来实现更多的控制和屏蔽复杂性。3、行为模式模板:封装算法结构,定义算法框架,并支持算法子步骤更改。策略:注意封装算法,支持算法的变化。通过封装一系列算法,它可以在任何时候独立于客户替换算法。状态:注意封装状态相关的行为,支持状态变化,并通过封装对象的状态来改变其内部状态变化时的行为。纪念品:注意封装对象状态的变化,支持状态保存、恢复。调解员:关注封装对象之间的交互。通过封装一系列对象之间的复杂交互,它们不需要显式地相互引用来实现解耦。责任链:关注包装对象的责任,支持责任变更,通过动态构建责任链实现交易处理。xxmand:它侧重于将请求封装为对象,支持请求的变更,并通过将一组行为抽
6、象为对象来实现行为请求者和行为实现者之间的分离。迭代器:关注特定领域的打包更改,支持集合中的更改,屏蔽集合对象的复杂内部结构,并为客户端程序提供透明的日历。翻译:专注于封装特定领域的变化,支持领域问题的频繁变化,将特定领域的问题按照一定的语法规则表达为句子,然后构造解释器来解释这些句子,从而达到解决问题的目的。观察者:关注包装对象通知,支持通信对象的变更,实现对象状态的变更,通知依赖它的对象并更新它们。访问者:专注于封装对象操作中的更改,并支持在运行时向类结构中添加新操作。在类层次结构中,作用于这些类实例的新操作是在不改变类别的情况下定义的。正确的治疗模式:设计模式基于系统的变更点,在有变更的
7、地方,应用设计模式。设计模式应该通过进化获得,系统的变化点只有通过不断进化才能准确定位。你不能为了模式而创造模式。设计模式是软件设计的一种软实力,而不是标准。你不应该夸大设计模式的作用。从我开始学习设计模式到现在已经有半年多了。我第一次接触设计模式是在网上偶然看到大华设计模式这本书的时候。读完序言的第一章后,我觉得对一个程序员来说,它的吸引力是巨大的。大概是在去年 10 月,该部门决定成立一个读书俱乐部,系统地研究设计模式。通过学习设计模式,除了学习“一些设计模式”,我还进一步熟悉了、以巩固面向对象的思想,并进一步熟悉了c#语言。我曾多次想象过,如果我们引入面向对象的思想并结合设计模式来重写或
8、改进我们的系统,我们的系统会像现在一样需要同样多的人来维护吗?大化设计模式一书实际上是gof 的设计模式可重用面向对象软件的基础 一书的“翻译”,这使得人们更容易理解。软件设计过程中的一些“模式”用易于理解的语言解释。在某些特定的情况下,最好的设计方法可以用来实现我们的目标。也许有很多方法,但是找到最好的方法并不容易。设计模式是以前设计经验的总结。它告诉我们,在特定的环境下,这样的设计师是最好的。学习设计模式有助于我们在软件设计过程中避免许多弯路。虽然我已经看过 gof 的全部 23 种设计模式,但只有在理解、认识、应用和思考之后,我才能真正体会到它的微妙之处。到目前为止,我已经深刻体验了以下
9、模式:1.策略封装一系列“算法”,这样它们就可以互相替换。“算法”不是单一数据结构中的算法。在实践中,它可以封装几乎任何类型的规则,这使得策略模式的应用极其广泛。2.模板有人说这是一个多用途模式,只要有抽象类就可以看到。它通过将不变行为转移到父类并移除子类中的重复代码,提供了一个良好的代码重用平台。3.外观-提供对基础架构的统一访问,并降低复杂性。网络程序员的三层架构就是这个想法。每一层封装了一部分函数,并为下一层提供了统一的方法调用。整个框架系统是外观模式的封装。随着1.0升级到 3.5,越来越多复杂的高级功能被封装起来,所以 Facade 无处不在。4.抽象工厂提供一个接口,用于创建一系列
10、相关或相互依赖的对象,而无需指定它们的特定类。乍一看,它太抽象了。例如,在三层架构中,bll 层直接调用 dal 层中的类。如果dal 层分别访问sql server 和 oracle,那么 bll 层需要根据实际情况决定在 dal 层中实例化哪个类。我们也希望 bll 层和 ui 层在两个 dal 层之间切换时不会改变。因此,接口层和抽象工厂可以添加到bll 层和 dal 层,以实例化 dal 层中的实例。单例确保一个类只有一个实例,并提供一个全局访问点来访问它,比如一个单件表单。单击菜单弹出一个表单。在关闭新表单之前,再次单击菜单,相同的弹出表单将不会再次出现。空间有限,其他模式或多或少都
11、有感觉。最后,我引用设计模式分析一书:设计模型体现了一种思想,而思想是指导行为的一切。理解和掌握设计模型并不意味着记住 23 个设计场景和协调决策。你实际上接受的是思想的熏陶和洗礼。在这个想法被融入你的想法之后,你会无意识地使用这个想法来进行你的设计和开发。所有这些都是最重要的。第二篇文章:这位设计模式的初学者以前没有接触过设计模式,这也是因为他以前没有真正体验过面向对象的设计。这种情况在我完成本科毕业设计后发生了根本性的变化,我听从了实验室一位师兄的建议,阅读了设计模式提炼。我开始意识到程序员和设计师之间的区别,我也开始意识到,在我的同学眼中,我只是一个“非常擅长编程”的程序员,至少现在是这
12、样。我做的本科项目是基于 java-swing 来设计一个类似于绘图程序的系统。我最终设计的程序在其他人看来非常好。然而,只有我知道我的设计实际上是糟糕的,最明显的是低内聚、紧耦合,而那些代码连我都不想维护。所以当我看到书中的一句话:“几乎 100%的软件不是由原始设计者维护的?”,更让我感到设计的失败。“设计模式细化”的出现可以说让我眼前一亮。这也是我想再读的第一本书。模式是什么?书中的解释是“模式是特定场景下特定问题的可重复、可表达的解决方案”。此外,该模式必须有三个要点:1.重复性。解决方案应该对应于外部场景。2.可转让性。一个解决方案应该可以移植到不同的问题环境中。3.用于指示此模式的
13、名称。模式不限于面向对象、设计,甚至软件开发。设计模式只是模式的一个子集。在前言中,作者说,在他非常清楚现有设计模式的指导原则和策略之后,这些原则帮助他决定开始一种可以帮助人们解决疑虑的生活?虽然我第一次看到“消除疑虑的生活”这个词,但我立刻觉得这也是我向往的一种生活。这本书介绍了软件开发过程中的三个不同视角:1.概念视角。这种观点“显示了问题领域中的概念?一个概念模型能在很少或根本不关注实现软件的情况下被绘制出来吗?”2.规格视角。“只看软件的界面,不看实现”3。实施前景。这是我现在使用的唯一视角在代码中。看到这里我更加确信这本书是关于我从未注意到的事情,但我应该对这些事情非常感兴趣,而且我
14、也深深地感慨:为什么我现在只看这本书?在书中,作者回顾了它以前的一个设计,并通过不断修改优秀的设计,逐渐展示了设计模式的强大力量。书中有一句经典的话如果你只有一把锤子,那么你会发现一切都像钉子一样。这意味着如果你只知道一种解决问题的方法,那么你只想要用这种方法解决所有的问题。我觉得这很像我现在。在面向对象的设计中,我几乎只“继承类”。因此,我的设计-太高的继承系统导致紧密耦合、低内聚力。当我了解到书中介绍的第一个设计模式时:外观模式,我立刻对这些设计模式非常感兴趣。我发现自己像一个“完美主义者”,试图追求结构完美的程序代码,设计模式给了我这样的可能性,尽管我只看到了一点点。设计图案就像一个漂亮
15、的女孩,你知道她不仅外表漂亮,而且有内涵。你还想做什么?当然,尽快了解她?第三章:设计模式的结果只被学习了几天,并且有一些肤浅的结果。在学习的几个设计模式中,每个设计模式都有一个特定的应用场景,每个场景都描述了需求的变化。设计模式用于解决这些变化。只要客户有新的要求,你的程序就会改变,不管你用什么方法,这种改变是不可避免的。关键是你如何解决这个变化!设计模式是寻找一个通用的更好的方法来解决这个变化,而不是回避它。不是你应用了设计模式,你的系统不会改变。面向对象编程有三种机制。就我个人而言,我认为设计模式很好地利用了“封装和多态性”,比如工厂方法模式和生成器模式。“封装”的含义不仅是封装代码的实
16、现,也是“封装”系统的变化部分。设计模式回答了如何“包装”这种变化。在一个系统中,总会有一部分经常变化。相反,总会有一部分以较低的频率变化。我们可以把它理解为在一定范围内不变的部分。设计模式需要做的是封装“改变的”部分,并将“改变的”部分与“未改变的”部分隔离开来,这样当“改变的”部分改变时,它就不会影响“未改变的”部分。如果你也研究过设计模式,那么你可能和我有同样的感觉。解决设计模式变化的方法可以概括为两个步骤:第一是转移变化,第二是转化变化。首先是“转移变化”。简而言之,就是将变更从 a 部分转移到 b 部分,并要求 b 部分进行变更,这样 a 部分就不会变更。在程序中,更改从调用者转移到
17、被调用者。例如,您有一个类场景,用于显示游戏场景的样式,调用者实例化该类并使用它。如果有一天,需求发生变化,而当前游戏场景的颜色太冷,我需要改变当前场景的颜色。此时,你必须决定谁将做出改变。您希望客户端调用程序来更改场景类的颜色属性,还是希望您的类场景发生变化?设计模式的答案是,请改变场景,呼叫者不会改变。你为什么要回答这个问题,因为这时,你的系统可能已经交付给用户了,如果呼叫者改变了,那么整个系统也会改变。然后是“转型变化”。我们已经决定改变场景。我们如何改变场景?直接改变?当然不是,如果是这种情况,那么呼叫者最好设置场景的某个属性,无论如何都必须重新部署。你想怎么改变它?“扩张”将这种“变
18、化”转化为“扩张”。你不想再来一场吗?然后我会为你重新设计一个场景,并生成一个动态链接库交付给你,然后让现有的程序调用这个场景。当然,这个时候打电话的人可能会有轻微的变化。例如,在开始时,调用者直接调用场景来呈现场景。现在根据配置文件决定呈现哪个场景。但是,如果您之前已经考虑过这个问题,那么调用者不需要做任何改变,因为调用者根据配置来决定呈现的场景,并且需求是弯曲的。您需要做的只是更改配置文件,并将调用者与新添加的场景相关联。这样,“变化”就变成了“延伸”,好处是显而易见的,这就是所谓的“开放与封闭”原则。以上文字完全是我的理解。随着不断的学习,我想这篇文章有望被修改多次。这是一个学习的过程。
19、不管你理解错了、还是写错了,关键是你如何面对这种错误!你是拒绝承认错误还是直面错误?这也是设计模式回答的问题。第四章:国外思维模式的经验国外思维模式的经验国外思维模式的经验自从我学习杜郎口以来已经有几年了。每年,我每学期都要参加大型讲座。它可以说是充满活力的。然而,经过几年的学习,我的心仍然是一片混乱。我对它知之甚少,很难灵活运用。当我试图使用它的时候,我也已经筋疲力尽了,照顾着一个,却失去了另一个。所以成功的经验很少,只有一点点粗糙的感觉。我认为目标设计应该尽可能简洁明了,易于理解,让绝大多数学生都能完成,如果太难或太简单,就不利于学生的学习。目标设计应控制在 1-3 项。如果目标太多,一节
20、课根本无法完成,那么设计就是白色的。从学生的角度来看,当看到许多目标时,他们的心里会产生恐惧和排斥,这不利于学习。由于条件限制,课堂训练只能采用课后练习和配合练习,缺乏灵活性。我总是觉得在电子白板上做练习的效果不是很好,因为读完一个题目后,我并没有深刻的印象,只有用手做的时候,我才能深刻地记住它。其他链接,我正在努力、探索。第 5 条:教学模式的经验教学模式的经验近年来,在我们学校领导的领导下,我们实施了一个有四个模块、八个环节、各具特色的课堂教学模式。通过过去几年的努力,我们现在可以顺利地将我们学校的教学模式应用到我们的课堂教学中。当然,我在过去几年的专业研究中也有自己的经验。现在,我将谈谈
21、我的一些个人观点。一、改变旧观念,接受新模式。对于一个新事物,人们需要通过不断学习来了解它,新的教学模式也是如此。这学期,学校组织我们进行了多次学习,深入了解了新模式、原则的内涵和实施细节,并组织我们通过几次教学研讨会,使我们能够真正了解这一模式的操作方法。无论是讲座还是讲座,我都积极参与教学和研究,积极与同行开展研究,并认识到新模式的确有助于培养学生的自主学习能力,有助于培养学生的合作意识,有助于提高学生的学习能力,有助于有效提高课堂效率。因此,我将在自己的课堂上积极尝试,努力实现以学生为中心、教师为主导的高效课堂。二、把班级还给学生。我不断提醒自己:“放手,给学生更多的时间学习。学生会,老
22、师不说话;老师不说学生能说什么。学生谈论他们能解决什么,并让他们讨论和解决它。“有了这种意识,学生有更多的机会参加课堂活动,学生有更多的时间学习,学生有更多的合作机会,学生自主学习、独立解决问题的能力有所提高。在课堂上,我只选择关键问题、常见问题来组织教学,充分发挥激励性评价的作用,让学生尽可能多地展示自己。这样,学生的学习热情很高,每个人都想展示自己,每个人都想被每个人认可,学习效果得到了提高。三、要充分准备每节课,需要事先认真准备。我们的教学模式更是如此,即使是指导学生如何预习。我刚开始给学生进行第一次接触预习,学生们不知道如何开始,所以手牵手教这个方法尤为重要。为了让学生学会预习,我不怕
23、耽误上课时间,并亲自指导学生预习的每一步。例如,我告诉学生通过拼写发音来学习阅读单词,并通过英汉翻译来熟练掌握单词。我还得亲自指导班上的学生如何写预习笔记,如此反复,虽然学生的预习仍无法完全放开,但是,看到相当多的学生已经开始独立预习下一单元,我还是感到很欣慰,毕竟小进步总比原地不动好。针对近年来的英语教学,我也有自己的看法:一、通过持续的语言知识而不是“玩”来培养学生的持久兴趣。初中英语教学应重视兴趣的培养,但仅靠歌唱游戏不能培养学生持久的兴趣。孩子们会厌倦新鲜。因此,歌唱游戏应该作为初中生学习英语语言知识、技能的一种手段,而不是培养兴趣的一种手段。我们可以用各种方法帮助学生记住更多的单词,
24、学习更多的语言规则,并创造尽可能多的模仿机会来提高学生的发音和语调。在英语学习中,听、说、读、写、翻译这五种能力可以互补。的确,听、说、读、写和坚持。光靠听、说、读、写很难获得高效率。如果一个人不仅仅通过模仿来培养自己的学习能力,就很难减轻学习负担。因此,初中生仍然应该认真学习语言。二、英语水平需要相应的词汇。“如果你不学习语言规则、并且不掌握相当多的单词,你的英语应用能力就是空中楼阁”。目前,初中英语教学并不要求学生掌握词汇。相反,他们只需要根据提示或图片说出单词。它的本质无非是记忆和鹦鹉学舌。由于学生没有进行相应的发音规则训练,不熟悉单词的拼写规则,并且单词的发音、形状、意思不能有效结合,
25、这导致单词记忆困难,成为中学生学习英语的瓶颈。3、中学英语教师应该有发展意识很久以前,人们对中学英语教师的语言知识和能力要求不高。他们认为中学英语简单,不需要太好的语言技能,只要他们有好的教学技能。事实上,时代在进步,社会在发展。同样,英语作为使用最广泛的交际术语之一,随着高科技的飞速发展,也在日新月异。如果我们的英语教师自满,不努力进步,那么他们的语言知识不仅会很快过时和误导,而且也会被时代淘汰。在变化的世界中改变英语.现代英语的变化,尤其是口语的变化,可以体现在以下几个方面:1、随着人们生活节奏的不断加快和互联网的形成,人们的交流变得越来越简单。简单快速地说话是现代生活的主要特征。现代英语在这方面的变化表现为“一词多用”。2、随着现代科学技术的飞速发展,现代英语的词汇急剧增加,我们发现现代英语词汇中有相当一部分是旧词,它们有了新的含义,如“存储”、“驱动”等。英国英语和美国英语之间的距离越来越小。也许这就是为什么美国对世界政治和经济的影响力越来越强的原因。美国英语的影响也在增加,尤其是对青少年,他们喜欢使用美国语言和发美国音。当然,在实施新的教学模式的过程中,我也有些困惑。例如,由于家庭作业的增加,学生忽视了预习,导致了不去上课的情况。我认为学校将为我们教学模式的实施创造良好的条件。我相信在不久的将来,我们可以把教学模式变成我们自己的模式。在教学中,通过爬一段楼梯
限制150内