随笔分类 -  面向对象和设计模式

摘要:* 职责链模式:使多个对象都有机会处理请求,从而避免发送的请求者和处理者的耦合关系。将对象炼成一个条 * 并延这个链处理请求,知道一个对象处理他为止 * * 图例: * * 客户端不需要知道具体哪个处理类处理了这个请求,只要提交就可以,提交请求后请求就会延着职责链 * 一直运行,直到碰到处理他的具体类为止 * * 也简化了职责链上具体类的关系,各个具体来更关注自己的处理逻辑,只需要指定一个继任的具体类就可以 * 而且可以随时随意的在职责链上添加或者删除新的具体处理类,更灵活 * * 需要注意的事,一个请求可能到了职责链的末端也没有具体处理类,这可能是因为配置错误,或者业务逻辑错误 * ... 阅读全文
posted @ 2010-07-14 19:06 音乐啤酒 阅读(198) 评论(0) 推荐(0) 编辑
摘要:组合模式:将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象具有一致性使用组合模式的场景:当需求中体现部分和整体层次的结构时候,希望用户可以忽略组合对象和当对象的不同,统一的使用组合结构中的所有对象的时候,就应该考虑组合模式。组合模式可以让用户无差别的时候组合结构和单个对象。图示:/// <summary> /// component为组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为 /// 声明一个接口用于访问和管理component的子部件 /// </summary> public abstract clas 阅读全文
posted @ 2010-07-12 01:21 音乐啤酒 阅读(201) 评论(0) 推荐(0) 编辑
摘要:建造者模式定义:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示使用建造者模式用户只需要指定建造者的具体类型 就可以得到他们,而不需知道具体的生成过程和构建细节。这个模式主要用于创建复杂的对象,这些对象内部的构造顺序通常是稳定的,但是对象内部的构造通常比较复杂图示;个人理解:使用建造者模式一般是这样的一种情况,某个复杂对象他的创建过程是稳定,创建步骤是一定,有具体的流程。比如创建人这个对象,必须会创建头,手,脚灯,或者构建汽车,肯定会有轮胎,框架,颜色等等。这些复杂对象他们的创建步骤是必须的,而且每个步骤是不能省略的,但是这个步骤又是复杂,所以可以把这些必须的步骤封装起 阅读全文
posted @ 2010-07-09 19:20 音乐啤酒 阅读(294) 评论(0) 推荐(0) 编辑
摘要:观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发送变化的时候会通知所有的观察者对象,是他们能够自动更新自己。观察者模式的特点和应用场景:当一个对象的改变需要同时改变其他对象的时候,而且他不知道具体有多少对象有待改变,应该考虑使用观察者模式一个抽象模型有两个方面,其中一个方面依赖于另一方面,这是用观察者模式可以将两者封装在独立的对象中是他们各自独立的改变和复用观察者模式的工作其实就是接触耦合,让耦合的双方都依赖于抽象而不是依赖具体。从而使得各自的变化都不会影响另一边的变化代码图示插图Subject:抽象类,将所有对观察者的引用都保存在一个集合中 阅读全文
posted @ 2010-07-04 03:11 音乐啤酒 阅读(259) 评论(0) 推荐(0) 编辑
摘要:from 大话设计模式模板方法设计模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法可以使得子类不修改算法结构即可重新定义该算法的特定步骤。图示:AbstractClass是一个抽象类,他其中的TemplateMethod定义了方法的算法骨架,primitiveOpertion1和2。算法骨架中的用到的部分操作步骤,这些操作步骤是抽象方法,推迟到子类中来实现,这样骨架算法没有变化,算法中的部分操作方法会被子类修改。concreteClass是具体类,重写abstractClass中的primitiveOperation方法,这样达到了修改骨架算法中部分操作方法的目的代码示例p 阅读全文
posted @ 2010-07-01 22:56 音乐啤酒 阅读(319) 评论(0) 推荐(0) 编辑
摘要:代理模式:为其他对象提供一种代理,以控制对这个对象的访问代理顾名思义就是 不直接访问某个对象,而是通过一个中间代理 来访问这个对象比如A要给C送礼物,但是A不认识C,于是A通过B,请B转交礼物给C。那么在这个情景中B就是代理。A的真正访问都是通过B来体现的。而且B的操作必须是体现A的,不能有A不具体的操作,比如A通过B送礼物给C,那么B就不能又其他多余的操作,因为他只是A的代理,A不具体的操作,B肯定也不能具备。所以代理必须和真正的类具备同样的访问操作,图示:为了使代理类和真正的类具备同样的访问操作,因此必须提供的一个接口,让代理类和真正类都继承,这样就可以约束代理类和真正的类都有同样的访问操 阅读全文
posted @ 2010-06-29 22:23 音乐啤酒 阅读(262) 评论(0) 推荐(0) 编辑
摘要:装饰模式,动态的给一个类东西添加新的职能,就增加新功能而言 要比生成子类更有效灵活装饰模式是一个类对象动态的添加某些新的职能,功能。是添加而不是覆盖,因此装饰模式有个特点就是每个装饰类必须先调用对象的原来的功能和职能,然后执行新添加的职能,这才叫装饰,从代码层次反应就是每次执行的时候都要调用基类的方法:Base.Method()----------个人理解装饰模式结构图:Componet是要装饰的对象抽象类Conretecomponent是对象抽象类的子类,如果要装饰的对象只有一个,那么就没必要有抽象类,直接又一个具体类就可以了Decorator是装饰抽象类,是用来装饰Componet类对象的 阅读全文
posted @ 2010-06-29 18:17 音乐啤酒 阅读(237) 评论(0) 推荐(0) 编辑
摘要:最近网友一直在讨论这个问题,搜索引擎过后网上抓文总结如下: 工厂方法UML图: 抽象工厂UML图: ---------------------------------对于java来说,你能见到的大部分抽象工厂模式都是这样的: 它的里面是一堆工厂方法,每个工厂方法返回某种类型的对象。比如说工厂可以生产鼠标和键盘。那么抽象工厂的实现类(它的某个具体子类)的对象都可以生产鼠标和键盘,但可能工厂A生产的是罗技的键盘和鼠标,工厂B是微软的。这样A和B就是工厂,对应于抽象工厂; 每个工厂生产的鼠标和键盘就是产品,对应于工厂方法;用了工厂方法模式,你替换生成键盘的工厂方法,就可以把键盘从罗技换到... 阅读全文
posted @ 2009-02-27 00:26 音乐啤酒 阅读(549) 评论(0) 推荐(0) 编辑
摘要:1.单一职责原则单一职责原则:就一个类而言,应该仅有一个因其他变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,当一个职责变化的可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离,2.开放-封闭原则开放-封闭原则:是说软件实体(类,模块,函数等等)应该可以扩展,但是不可修改。无论一个模块是多么的“封闭”,都会存在一些变化,既然不可能完全封闭,设计人员必须对他设计的模块应该对哪种变化封闭做出选择,他必须先猜测最有可能发生的变化种类,然后构造抽象来隔离那些变化。 阅读全文
posted @ 2009-02-25 19:19 音乐啤酒 阅读(207) 评论(0) 推荐(0) 编辑
摘要:模板方法模式:定义一个操作中的算法骨干,而将这些步骤延迟到子类中,模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特点步骤。实例图:抽象类定义算法的骨干(TemplateMethod)和可能使用到的算法(primitiveoperation1,2)这2个算法由子类继承并且实现。concreteClass类继承抽象类,实现primitiveMethod方法。功抽象类的实例在骨干方法中调用模板方法模式是通过把不变的行为搬移到超类中,去除子类中重复代码来体现他的优势。模板方法模式提供了一个很好的代码复用平台。当不变和可变的行为在方法的子类中实现中混混合在一起的时候,不变的行为就会在 阅读全文
posted @ 2009-02-25 17:36 音乐啤酒 阅读(176) 评论(0) 推荐(0) 编辑
摘要:策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 简单工厂:将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。 简单工厂严格意义上不是一种设计模式,只能是一种良好的编程习惯。简单工厂模式是创建的对象,且由该对象调用其内部的指定算法,主要是针对的对象之间的行为差异,单独封装 策略模式是针对的对象内部行为的算法,可以看作是一个集合,是允许多个策略实体进行叠加的。但工厂模式就不成。这是csdn一些人的看法首先简单工厂模式,属于创建者模式,他是讲究类的创建的,策略模式输入行为模式,是说一个事情的多种实现算法的,算法不同。从代码层次来看:简单 阅读全文
posted @ 2009-02-24 18:20 音乐啤酒 阅读(174) 评论(0) 推荐(0) 编辑
摘要:c#设计模式学习1之简单工厂 进入程序员这个行业快一年了,写的程序就那么多,一直感觉写的程序没有质的飞跃,看看高手人家的程序,感觉和自己写的差的很大,什么n层了等,看起来都费力,仔细琢磨可能是设计模式很欠缺,理解了设计模式才能是整个项目的代码编写更看起来好一点(0)。所以最近学习一下设计模式,随便记录一下,以后也好回头看看。主要看的资料是c#设计模式,并不是我自己发明的啊() 前提:学习设计模式,我认为必须要把c#的基本概念和方法掌握熟练,比如,对象,类,接口,抽象类和方法,重写,覆盖,继承 按照Gang of Four设计模式分为:创建型,结构型和行为型。 所以创建型模式都涉及到创建对象实例 阅读全文
posted @ 2007-04-14 18:13 音乐啤酒 阅读(167) 评论(0) 推荐(0) 编辑

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