10 2013 档案

摘要:一、引言提到模板,大家肯定不免想到生活中的“简历模板”、“论文模板”、“Word中模版文件”等,在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它,例如简历模板,下载下来的简历模板的格式都是相同的,然而我们下载下来简历模板之后我们可以根据自己的情况填充不同的内容要完成属于自己的简历。在设计模式中,模板方法模式中模板和生活中模板概念非常类似,下面让我们就详细介绍模板方法的定义,大家可以根据生活中模板的概念来理解模板方法的定义。二、模板方法模式详细介绍2.1 模板方法模式的定义模板方法模式——在一个抽象类中定义一个操作中的算法骨架(对应于生活中的大家下载 阅读全文
posted @ 2013-10-28 23:08 Learning hard 阅读(19007) 评论(5) 推荐(8) 编辑
摘要:一、引言在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象,然后客户端只需要访问代理对象,由代理对象去帮我们去请求目标对象并返回结果给客户端,这样的一个解决思路就是今天要介绍的代理模式。二、代理模式的详细介绍代理模式按照使用目的可以分为以下几种:远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是本电脑中,也可以在另一台电脑中。最典型的例子就是——客户端调用Web服务或WCF服务。虚拟(V 阅读全文
posted @ 2013-10-27 14:55 Learning hard 阅读(27510) 评论(10) 推荐(12) 编辑
摘要:一、引言在软件开发过程,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非常严重,然而享元模式可以解决这个问题,下面具体看看享元模式是如何去解决这个问题的。二、享元模式的详细介绍在前面说了,享元模式可以解决上面的问题了,在介绍享元模式之前,让我们先要分析下如果去解决上面那个问题,上面的问题就是重复创建了同一个对象,如果让我们去解决这个问题肯定会这样想:“既然都是同一个对象,能不能只创建一个对象,然后下次需要创建这个对象的时候,让它直接用已经创建好了的对象就好了”,也就是说 阅读全文
posted @ 2013-10-26 23:37 Learning hard 阅读(17636) 评论(11) 推荐(8) 编辑
摘要:一、引言在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ”门面“模式。下面就具体介绍下外观模式。二、外观模式的详细介绍2.1 定义外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部子系统中方法,从而外观模式让客户和子系统之间避免了紧耦合。2.2 外观模式实现介绍了外观模式的定义之后,让我们具体看 阅读全文
posted @ 2013-10-22 17:38 Learning hard 阅读(17186) 评论(2) 推荐(16) 编辑
摘要:一、引言在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象和复合对象在功能上区别,导致在操作过程中必须区分简单对象和复合对象,这样就会导致客户调用带来不必要的麻烦,然而作为客户,它们希望能够始终一致地对待简单对象和复合对象。然而组合模式就是解决这样的问题。下面让我们看看组合模式是怎样解决这个问题的。二、组合模式的详细介绍2.1 组合模式的定义组合模式允许你将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。下 阅读全文
posted @ 2013-10-21 15:51 Learning hard 阅读(22060) 评论(5) 推荐(17) 编辑
摘要:一、引言在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类)、AccessoriesPhone(挂件手机类)等,这样就会导致 ”子类爆炸“问题,为了解决这个问题,我们可以使用装饰者模式来动态地给一个对象添加额外的职责。下面让我们看看装饰者模式。二、装饰者模式的详细介绍2.1 定义装饰者模式以对客户透明的方式动态地给一个对象附加上更多的责任,装饰者模式相比生成子类可以更灵活地增加功能。2.2 装饰者模式实现这里以手机和手机配件的例子来演示装饰者模式的实现,具体代码 阅读全文
posted @ 2013-10-18 11:33 Learning hard 阅读(34174) 评论(20) 推荐(29) 编辑
摘要:一、引言这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下:这样的实现使得每部不同型号的电视都有自己遥控器实现,这样的设计对于电视机的改变可以很好地应对,只需要添加一个派生类就搞定了,但随着时间的推移,用户需要改变遥控器的功能,如:用户可能后面需要对遥控器添加返回上一个台等功能时,此时上面的设计就需要修改抽象类RemoteControl的提供的接口了,此时可能只需要向抽象类中添加一个方法就可以解决了,但是这样带 阅读全文
posted @ 2013-10-17 12:33 Learning hard 阅读(26262) 评论(16) 推荐(12) 编辑
摘要:前言在这一年多的时间里,经常逛国内的一些技术社区和论坛,其中发现一个问题——现在很多朋友,大部分是学生和刚毕业参加工作的朋友,或工作1-2年的朋友都比较迷茫,不知道自己想要什么,想下决心努力学习但是又缺乏耐力坚持不了,所以经常会觉得非常迷茫。所以我决定写这篇文章来分享下本人成为微软最有价值专家(MVP)的一个经历,希望可以让处于迷茫的朋友有所感悟,并付诸行动地去寻找自己的目标并实现它。问题剖析对于坚持不了这个问题,主要原因还是缺乏明确的目标或者说定的目标太大太泛,因为有些朋友所定的目标都很大,例如:“我想成为技术大牛”,或“我想做架构师”、“我想获得赚月薪2万以上的工作”等这样的大而泛的目标, 阅读全文
posted @ 2013-10-13 21:45 Learning hard 阅读(11823) 评论(76) 推荐(57) 编辑
摘要:一、引言在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象。那么如果将“将现存的对象”在新的环境中进行调用呢?解决这个问题的办法就是我们本文要介绍的适配器模式——使得新环境中不需要去重复实现已经存在了的实现而很好地把现有对象(指原来环境中的现有对象)加入到新环境来使用。二、适配器模式的详细介绍2.1 定义下面让我们看看适配器的定义,适配器模式——把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。适配器模式有类的适配器模式和对象的适配器模式两种形式,下 阅读全文
posted @ 2013-10-13 10:24 Learning hard 阅读(37339) 评论(6) 推荐(23) 编辑

点击右上角即可分享
微信分享提示