设计模式
文章平均质量分 63
rhwayfunn
这个作者很懒,什么都没留下…
展开
-
设计模式系列之四:观察者模式
前言观察者模式是属于设计模式中的行为型模式,所谓行为型就是指对象的动作发生改变,比如方法以及状态。那么观察者模式是一种什么模式呢?说白了,观察者模式解决的一对多的依赖关系,当一个对象的状态发生改变的时候,其他依赖此对象的对象会得到通知并且做出相应的改变。但从定义上还是很难理解。我们可以从一个简单的例子中更深地去体会观察者模式。 问题背景 某公司的两名职员在主管离开办公室后,一个在看股票,一个在原创 2016-03-27 21:56:06 · 1684 阅读 · 1 评论 -
设计模式系列之十二:单例模式
前言1.描述Singleton(单例)是设计模式的一种,为了保证一个类仅有一个实例,并提供一个访问它的全局访问点。2.主要特点1)单例类确保自己只有一个实例(构造函数私有:不被外部实例化,也不被继承)。2)单例类必须自己创建自己的实例。3)单例类必须为其他对象提供唯一的实例。3.单例模式的应用资源管理器,回收站,打印机资源,线程池,缓存,配置信息类,管理类,控制类,门面类,代理类通常被设计为单例类如转载 2016-03-28 13:18:37 · 589 阅读 · 0 评论 -
设计模式系列之十一:装饰者模式
前言装饰者模式属于结构型设计模式,它可以动态地为对象添加额外的只能,就这点来看,装饰者模式比生成子类更加灵活。既然是结构型设计模式,那么装饰者模式的结构优势体现在哪里呢?有一个组件类,有一个具体的组件类,这个具体的组件类就是要被装饰的对象,还有一个装饰者类,其继承了组件类,对于组件类来说不需要知道这个装饰者类对象的存在,因为装饰者对象真正发挥作用的对象是具体的组件类。要注意的是,组件类和装饰者类都是原创 2016-03-28 13:13:52 · 640 阅读 · 0 评论 -
设计模式系列之十:命令模式
前言命令模式属于行为型设计模式。所谓命令,肯定有命令的发送者以及命令的接收者,命令模式则是命令本身封装成一个对象,从而使得命令接收者可以根据接收到的命令让不同的命令执行者执行具体的命令,使用命令模式可以让命令请求者排队并记录命令日志。命令模式可以使你可用不同的请求对客户参数化。很显然,通过使用命令模式可以较容易地设计一个命令队列,最重要的是命令模式把命令请求的对象与具体执行命令的对象分隔开了,这样具原创 2016-03-28 13:12:24 · 627 阅读 · 0 评论 -
设计模式系列之九:职责链模式
前言责任链模式属于行为型设计模式,所谓责任链,就是把责任处理对象连成一条链,这样当一个处理对象不能及时处理的时候就会交给下一个处理对象处理,直到被处理为止。就像我们找人签字盖章的时候,当一个对象不能处理的时候他会告诉你你应该下一个部门进行盖章,而如果下一个部门仍然不能处理就会继续告诉你下一个应该去的部门,直到把章盖好。这个例子不一定恰当,但是反映了责任传递这么一个过程。责任传递是责任链模式的核心,责原创 2016-03-28 13:11:02 · 634 阅读 · 0 评论 -
设计模式系列之八:适配器模式
前言适配器模式与外观模式一样,也属于结构型模式。适配器所谓适配就是定义了一个外界希望的接口,从而使得原来不能工作的那些对象可以一起工作。在软件开发中,如果希望复用一些类,但是需要复用的类与复用环境不符的时候,需要使用适配器模式。更具体的说就是当前系统的行为与数据都正确但是接口不符这样就需要使用适配器模式。从设计角度讲,适配器模式耐无奈之举。这么说也很好理解,因为当需要复用一些类的时候,如果不希望更改原创 2016-03-27 21:59:36 · 740 阅读 · 0 评论 -
设计模式系列之七:外观模式
前言外观模式属于设计模式中的结构型设计模式,所谓结构型,就是说外观模式更关注的系统的架构设计。使用外观模式使得子系统间的依赖达到最小,通过设置一个Facade外内外提供了了简单的屏障。外观模式为一组接口提供一个统一的界面,这个界面就是这组接口的高级接口,这个高级接口使得子系统更加易用。通常在软件设计中,尤其是OO,对实现细节的过多暴露是很不利于后期的扩展的。只有暴露的细节越少,进行功能的扩展才会更加原创 2016-03-27 21:58:14 · 708 阅读 · 0 评论 -
设计模式系列之六:策略模式
前言策略模式是设计模式中的行为型模式,所谓行为型就是其主要使用在方法有很大灵活性的情况。而之前的工厂模式主要是对创建对象的优化,减少程序中使用new对象的次数。策略模式在Java源码中也是很常见的,比如我们要比较两个对象的大小,既可以使用默认的Comparable接口,也可以实现自定义的比较规则,即实现Comparator接口。这两种比较比较方法都是不同比较规则的体现,属于不同的策略。策略模式从定义原创 2016-03-27 21:57:18 · 1042 阅读 · 0 评论 -
设计模式系列之一:简单工厂模式
前言设计模式能够帮助我们设计出健壮,低耦合性的代码,从此和高耦合的代码say goodbye!在所有的的设计模式中,简单工厂算是我们平时接触比较多的吧,多线程中的消费者工厂类与生产者工厂类应该算是接触最早的设计模式,简单工厂模式要解决的首要问题就是降低程序之间的耦合度,通过Java中的封装、继承与多态实现解耦。通过使用简单工厂模式,我们设计的代码更易于维护和复用 问题背景在进入正题之前我们先看一下原创 2016-03-27 21:50:54 · 1062 阅读 · 0 评论 -
设计模式系列之二:工厂方法模式
前言前一篇博文中介绍了简单工厂模式,这里再介绍一下工厂方法模式。与简单工厂很像,那么两者的区别是什么呢?在这篇博文中,首先会简单介绍一下工厂方法的使用方法,并对工厂方法模式进行简单的小结。最后,将结合具体的例子对比简单工厂模式与工厂方法模式,并对两者的使用场景做一个小小的归纳。 问题背景背景: 某公司开发了一个A软件,数据库使用的是SQLServer。后由于客户要求需要使用Oracle数据库,原来原创 2016-03-27 21:52:46 · 803 阅读 · 0 评论 -
设计模式系列之三:抽象工厂模式
前言在设计模式有三个模式是与工厂模式相关的,分别是:简单工厂模式、工厂方法模式以及抽象工厂模式。在前面的文章中已经谈到前面两种,这里就对抽象工厂模式介绍一下。抽象工厂模式就是提供一个创建一系列相关或者相互依赖的接口(也就是抽象类),而无需指定具体的类。简单来说,就是当我们需要创建一个具体的对象的时候,我们不必指定该具体的对象,只需要使用它的上层接口直接调用就行。好像还是很抽象哦,好吧,为了更清晰领悟原创 2016-03-27 21:54:31 · 906 阅读 · 0 评论 -
设计模式系列之五:代理模式
代理模式代理模式的定义很简单:给某一对象提供一个代理对象,并由代理对象控制对原对象的引用。代理模式的结构有些情况下,一个客户不想活着不能够直接引用一个对象,可以通过代理对象在客户端和目标对象之间起到中介作用。代理模式中的角色有:1、抽象对象角色声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象2、目标对象角色定义了代理对象所代表的目标对象3、代理对象角色代理对转载 2016-03-28 13:39:12 · 639 阅读 · 0 评论