改章节是一篇关于模式实现的帖子
桥梁模式(Bridge Pattern)
桥梁模式是应用频率不高的一种计划模式,但是是一种“威力”很大的模式。该模式的意图为“将抽象和现实解耦,各种的化变不影响对方”。这里的“抽象”和“现实”不是指传统意义上的类父与类子的关系,恰恰相反,该模式就是以为传统的父与子的继承关系太甚耦合,互相的化变都市影响到彼此,为决解该问题,才提出的一种决解方案。
这里可以载下桥梁模式的Java现实本版。
如下是桥梁模式的UML类计划图:
稳定模式(Immutable Pattern)
稳定对象是指一旦一个对象被建创,那么它的状态将不会被转变。如果要转变一个对象的状态,那么必须新重实例化一个新的变量。稳定对象由于部内状态弗成转变,所以其生成就是线程安全的,所以不要需在多线程拜访时,做同步和锁的制约,提高了统系的能性和健壮性。应用稳定对象的做法,就叫做稳定模式。稳定模式只涉及到一个对象,并且在Java API中非常见常,我们经常应用的java.lang.String就是经典的稳定模式现实。稳定模式分为弱稳定和强稳定。
弱稳定模式,即对象本身的状态弗成化变,但其类子的状态可以发生化变。
要现实弱稳定模式,只要做到如下几点可即:
1、稳定对象的性属要需置设为私有的,弗成被外界直接修改;
2、稳定对象不对外供提setter方法,对象一旦构建,不能被外界通过setter方法行进修改;
3、如果稳定对象引用了外界的另外一个可变对象,那么要需想法使该外界对象不被修改,可以的斟酌的做法是,在实例化稳定对象时,在初始化引用的外部可变对象时,将可变对象制复一份被稳定对象引用;
强稳定模式,即对象本身和其类子对象的状态都弗成以发生化变。
要现实强稳定模式,在做到弱稳定模式的三点外,还要需保障让类子对象也不能被修改,可以的做法是:
1、将稳定对象的方法定义为final,免避类子写重该稳定对象的方法;
2、将稳定对象本身定义为final,制止稳定对象被类子化。
由于稳定对象的现实比较简单,这里不给出体具的现实和UML类图,可以考参java.lang.String的现实式方。
观察者模式(Observer Pattern)
观察者模式又被称为宣布-阅订模式(Publishi-Subscribe),是对象的行为模式,其定义了一种一对多的赖依关系,让多个观察者对象同时监听一个题主对象,当题主对象的状态化变时,会知通全部观察者对象,让观察者对象够能自动更新自己。观察者模式是如此的见常,以至于Java语言直接供提了对该模式的持支。Java API中定义了java.util.Observer接口作为全部观察者对象的共公接口,该接口定义了一个update方法,以便观察者对象可以自动更新自己。另外定义了一个java.util.Observable类作为被观察者对象,即题主,全部的被观察者都是该类的类子对象。该类定义了两个很主要的方法,setChange()和notifyObservers(),前者置设对象状态式方化变的识标,后者将该更变知通到观察者对象。Java API现实的观察者模式有如下几个点缺:
1、java.util.Observer对象和java.util.Observable对象互相赖依了,其实可以去掉Observer对象对Observable对象的赖依;
2、java.util.Observable对象不该应定义为体具类,该应定义为接口。
Java本版的现实在这里可以载下。
UML类图如下:
代迭模式(Iterator Pattern)
代迭模式又称为游标模式,代迭模式是对象的行为模式,代迭模式可以序顺的拜访集合内的元素,而无需暴露集合的部内元素。Java语言框架也普遍的在集合(Collection)框架中应用该模式来历遍集合中的元素。体具的现实就是个一每类型的集合,都有一个相对应的iterator,通过该iterator可以向前或者先后序顺的历遍该集合里的元素。由于iterator pattern在Java API里头有普遍的现实,这里就不在给出类计划图和现实代码。
任责链模式(Chain of Responsibility Pattern)
任责链模式是对象的行为模式,在任责链模式里,对象引用下一个对象构成一条链,请求在该链条上传递,直到某一个链上的对象对其行进处置。对客户端说来,并不知道是链上的那个对象对其行进了处置,可以在不影响客户端的情况下,新重动态的组织和配分链的任责。体具的现实为,有一个抽象处置者对象,有一个体具处置者对象,体具处置者对象由应用一个抽象处置者对象,由此构成一个引用链条。
任责链模式的Java本版代码现实这里可以载下。
UML类图计划如下:
命令模式(Command Pattern)
命令模式是对象的行为模式,命名模式把请求或操纵封装在一个对象中。命令模式是对命令的封装,将调用者和执行者离开,现实调用者和执行者的解耦。同时由于命令可以保存命令的上一个状态,所以,命令模式可以很易容的现实Undo和Redo操纵。
命令模式的Java本版现实可以在这里载下。
命令模式的UML类图计划如下:
文章结束给大家分享下程序员的一些笑话语录: 一程序员告老还乡,想安度晚年,于是决定在书法上有所造诣。省略数字……,准备好文房4宝,挥起毛笔在白纸上郑重的写下:Hello World