设计模式
geferdezero
这个作者很懒,什么都没留下…
展开
-
观察者模式
观察者模式观察者模式又名发布-订阅模式,我跟喜欢叫它发布订阅模式,因为这就说明了这个模式的原理。即订阅者订阅需要的相关消息,发布者在适当的时候发布这个消息给订阅者就是了。就像定牛奶,你去定了某一家的牛奶,然后每天就会有牛奶送给你。而这个牛奶就是我们的消息。结构图 抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如ArrayList对象)里,每个主题都可以有任何数原创 2017-04-07 14:49:31 · 385 阅读 · 0 评论 -
适配器模式
适配器模式将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。这句话说明了适配器模式的主要作用,就是适配,使原本不兼容的接口可以一起工作。结构图从上图可以看出,Adaptee类并没有sampleOperation2()方法,但是客户端则期待这个方法。为使客户端能够使用Adaptee类,需要提供一个包装(Wrapper)类Adapt原创 2017-04-21 12:13:58 · 321 阅读 · 0 评论 -
状态模式
大话设计模式中说,面向对象设计其实就是希望做到代码的责任分割。其实状态模式就是一种状态的分割状态模式当一个对象的内在状态改变时,允许改变其行为,这个 对象看起来就像是改变了其类。 状态模式主要解决的是当控制一个对象的状态转换表达式过于复杂时的情况,把状态的判断转移到表示不同状态的一系列类当中,可以吧复杂的判断逻辑简化。状态模式结构图从图中可以看出,状态模式的好处是将与特定状态相关的行为局部化,并且原创 2017-04-20 12:15:29 · 315 阅读 · 0 评论 -
工厂方法模式
简单工厂模式简单工厂模式是是很常见的一个设计模式。在日常的学习中经常提起,也很容易实现。 一个简单的计算器,实现两个数的运算。简单工厂方法的实现如下: //运算类 public abstract class Operation { public double numberA = 0; public double numberB = 0; public abstract do原创 2017-03-29 14:24:05 · 389 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式前面讲了简单工厂模式,工厂模式,这里来说一下抽象工厂模式。抽象工厂模式个人认为是工厂模式的再一次抽象得到的。他们的目的都是一样的,都是解耦合。工厂模式生产的是一类产品,当你扩大这个生产的商品的种类,使之成为一个产品族,这个时候由于类中的产品构成了不同等级结构中的产品族,它就变成抽象工厂模式了。将产品族减少产品后就可能变成了工厂模式。总之,不论是工厂模式,抽象工厂模式,还是简单工厂模式。他原创 2017-04-11 12:16:28 · 338 阅读 · 0 评论 -
设计模式的原则
设计模式设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。软件设计的四大要求:拓展,维护,复用,灵活软件设计的几大原则1、单一职责原则就一个类而言,应该仅有一个引起它变化的原因原创 2017-04-01 13:42:43 · 334 阅读 · 0 评论 -
建造者模式
建造者模式当我们需要将一个复杂的对象的构建与他的表示分离,使用相同的构造过程来创建不同的表示的时候,我们就需要使用建造者模式了。结构图例子:大话设计模式中的,例子。大鸟让小菜创建一个小人,拥有头,身体,左右手,左右腿。因为人都拥有头,身体,左右手和左右腿。这样,当需要构建出不同的人,例如一个瘦子,一个胖子,一个瘸腿的,他们的过程都是一样的,但是表达方式都不一样。 于是我们就可以将构建人的过程抽象成原创 2017-03-31 20:07:30 · 293 阅读 · 0 评论 -
模板方法模式
模板方法模式定义一个操作中的算法的股价,而将一些步骤延迟到子类中去实现。模板方法使得子类可以不改变一个算法的结构即可重定义该算法中的某些特定的步骤结构图要义模板方法模式主要是指,定义父类给出了逻辑结构的骨架,并且封装完成了一部分的逻辑操作,而有一部分的实现是可变的,需要动态的调整。将这一部分延时到子类完成。其中我们最熟悉的要算java的HttpServlet了,HttpServlet就是使用的模板方原创 2017-03-30 10:51:24 · 464 阅读 · 0 评论 -
原型模式
原型模式用原型实例制定创建对象的种类,并且通过拷贝这些原型创建一个新的对象。原型模式的结构图 原型模式其实是从一个对象创建另一个可定制的对象,而且不需要知道任何的细节原型模式的用法:其关键就在于clone方法。类中实现clone方法就来实现自我复制创建出一个新的对象。注意:复制有深度复制,和浅复制,做具体的操作的时候,注意对象的复制是复制的引用还是复制的对象原创 2017-03-29 14:34:31 · 657 阅读 · 0 评论 -
Proxy代理模式
Proxy Pattern(即:代理模式),23种常用的面向对象软件的设计模式之一 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 优点: 真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。 代理对象可原创 2016-10-31 15:46:02 · 381 阅读 · 0 评论 -
装饰模式
装饰模式装饰模式动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加的灵活。装饰模式的结构图 Component是一个接口,可以给对象动态的添加职责,功能。ConcreteComponent是定义了一个具体的对象。也可以给对象添加一些职责。Decorator,表示装饰类,继承了Component,从外类来扩展Conmponent类的功能,但是对于Component来说,是无需原创 2017-03-29 10:37:51 · 277 阅读 · 0 评论