《Java与模式》重点总结06.docx

上传人:b****3 文档编号:10751834 上传时间:2023-05-27 格式:DOCX 页数:24 大小:484.36KB
下载 相关 举报
《Java与模式》重点总结06.docx_第1页
第1页 / 共24页
《Java与模式》重点总结06.docx_第2页
第2页 / 共24页
《Java与模式》重点总结06.docx_第3页
第3页 / 共24页
《Java与模式》重点总结06.docx_第4页
第4页 / 共24页
《Java与模式》重点总结06.docx_第5页
第5页 / 共24页
《Java与模式》重点总结06.docx_第6页
第6页 / 共24页
《Java与模式》重点总结06.docx_第7页
第7页 / 共24页
《Java与模式》重点总结06.docx_第8页
第8页 / 共24页
《Java与模式》重点总结06.docx_第9页
第9页 / 共24页
《Java与模式》重点总结06.docx_第10页
第10页 / 共24页
《Java与模式》重点总结06.docx_第11页
第11页 / 共24页
《Java与模式》重点总结06.docx_第12页
第12页 / 共24页
《Java与模式》重点总结06.docx_第13页
第13页 / 共24页
《Java与模式》重点总结06.docx_第14页
第14页 / 共24页
《Java与模式》重点总结06.docx_第15页
第15页 / 共24页
《Java与模式》重点总结06.docx_第16页
第16页 / 共24页
《Java与模式》重点总结06.docx_第17页
第17页 / 共24页
《Java与模式》重点总结06.docx_第18页
第18页 / 共24页
《Java与模式》重点总结06.docx_第19页
第19页 / 共24页
《Java与模式》重点总结06.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《Java与模式》重点总结06.docx

《《Java与模式》重点总结06.docx》由会员分享,可在线阅读,更多相关《《Java与模式》重点总结06.docx(24页珍藏版)》请在冰点文库上搜索。

《Java与模式》重点总结06.docx

《Java与模式》重点总结06

十六、迭代子(Iterator)模式

1、白箱聚集与外禀迭代子

(1)示例类图

(2)示例代码清单

packagecom.javapatterns.iterator.whitebox;

abstractpublicclassAggregate{

publicIteratorcreateIterator(){

returnnull;

}

}

packagecom.javapatterns.iterator.whitebox;

publicclassConcreteAggregateextendsAggregate{

privateObjectobjs[]={"MonkTang","Monkey","Pigsy","Sandy","Horse"};

publicIteratorcreateIterator(){

returnnewConcreteIterator(this);

}

publicObjectgetElement(intindex){

if(index

returnobjs[index];

}else{

returnnull;

}

}

publicintsize(){

returnobjs.length;

}

}

packagecom.javapatterns.iterator.whitebox;

publicinterfaceIterator{

voidfirst();

voidnext();

booleanisDone();

ObjectcurrentItem();

}

packagecom.javapatterns.iterator.whitebox;

publicclassConcreteIteratorimplementsIterator{

/**

*@directed

*/

privateConcreteAggregateagg;

privateintindex=0;

privateintsize=0;

publicConcreteIterator(ConcreteAggregateagg){

this.agg=agg;

size=agg.size();

index=0;

}

publicvoidfirst(){

index=0;

}

publicvoidnext(){

if(index

index++;

}

}

publicbooleanisDone(){

return(index>=size);

}

publicObjectcurrentItem(){

returnagg.getElement(index);

}

}

packagecom.javapatterns.iterator.whitebox;

publicclassClient{

/**

*@directed

*/

privateIteratorit;

/**

*@directed

*/

privateAggregateagg=newConcreteAggregate();

publicvoidoperation(){

it=agg.createIterator();

while(!

it.isDone()){

System.out.println(it.currentItem().toString());

it.next();

}

}

publicstaticvoidmain(String[]args){

Clientclient=newClient();

client.operation();

}

}

2、黑箱聚集与内禀迭代子

(1)示例类图

(2)示例代码清单

packagecom.javapatterns.iterator.blackbox;

abstractpublicclassAggregate{

publicIteratorcreateIterator(){

returnnull;

}

}

packagecom.javapatterns.iterator.blackbox;

publicclassConcreteAggregateextendsAggregate{

privateObject[]objs={"MonkTang","Monkey","Pigsy","Sandy","Horse"};

publicIteratorcreateIterator(){

returnnewConcreteIterator();

}

privateclassConcreteIteratorimplementsIterator{

privateintcurrentIndex=0;

publicvoidfirst(){

currentIndex=0;

}

publicvoidnext(){

if(currentIndex

currentIndex++;

}

}

publicbooleanisDone(){

return(currentIndex==objs.length);

}

publicObjectcurrentItem(){

returnobjs[currentIndex];

}

}

}

packagecom.javapatterns.iterator.blackbox;

publicinterfaceIterator{

voidfirst();

voidnext();

booleanisDone();

ObjectcurrentItem();

}

packagecom.javapatterns.iterator.blackbox;

publicclassClient{

/**

*@directed

*/

privateIteratorit;

/**

*@directed

*/

privateAggregateagg=newConcreteAggregate();

publicvoidoperation(){

it=agg.createIterator();

while(!

it.isDone()){

System.out.println(it.currentItem().toString());

it.next();

}

}

publicstaticvoidmain(String[]args){

Clientclient=newClient();

client.operation();

}

}

(3)其它示例类图

 

十七、责任链(ChainofResponsibility)模式

(1)示例类图

(2)示例代码清单

packagecom.javapatterns.chainofresp.flowerpassingthread;

abstractclassPlayer{

abstractpublicvoidhandle();

/**

*@linkaggregation

*/

privatePlayersuccessor;

publicPlayer(){

successor=null;

}

protectedvoidsetSuccessor(PlayeraSuccessor){

successor=aSuccessor;

}

publicvoidnext(){

if(successor!

=null){

successor.handle();

}else{

System.out.println("Programterminated.");

}

}

}

packagecom.javapatterns.chainofresp.flowerpassingthread;

classJiaBaoYuextendsPlayer{

publicJiaBaoYu(PlayeraSuccessor){

this.setSuccessor(aSuccessor);

}

publicvoidhandle(){

if(DrumBeater.stopped){

System.out.println("JiaBaoYugottadrink!

");

}else{

System.out.println("JiaBaoYupassed!

");

next();

}

}

}

packagecom.javapatterns.chainofresp.flowerpassingthread;

classJiaHuanextendsPlayer{

publicJiaHuan(PlayeraSuccessor){

this.setSuccessor(aSuccessor);

}

publicvoidhandle(){

if(DrumBeater.stopped){

System.out.println("JiaHuangottadrink!

");

}else{

System.out.println("JiaHuanpassed!

");

next();

}

}

}

packagecom.javapatterns.chainofresp.flowerpassingthread;

classJiaMuextendsPlayer{

publicJiaMu(PlayeraSuccessor){

this.setSuccessor(aSuccessor);

}

publicvoidhandle(){

if(DrumBeater.stopped){

System.out.println("JiaMugottadrink!

");

}else{

System.out.println("JiaMupassed!

");

next();

}

}

}

packagecom.javapatterns.chainofresp.flowerpassingthread;

classJiaSheextendsPlayer{

publicJiaShe(PlayeraSuccessor){

this.setSuccessor(aSuccessor);

}

publicvoidhandle(){

if(DrumBeater.stopped){

System.out.println("JiaShegottadrink!

");

}else{

System.out.println("JiaShepassed!

");

next();

}

}

}

packagecom.javapatterns.chainofresp.flowerpassingthread;

classJiaZhengextendsPlayer{

publicJiaZheng(PlayeraSuccessor){

this.setSuccessor(aSuccessor);

}

publicvoidhandle(){

if(DrumBeater.stopped){

System.out.println("JiaZhenggottadrink!

");

}else{

System.out.println("JiaZhengpassed!

");

next();

}

}

}

packagecom.javapatterns.chainofresp.flowerpassingthread;

importjava.util.Timer;

importjava.util.TimerTask;

publicclassDrumBeater{

privatestaticPlayerfirstPlayer;

publicstaticbooleanstopped=false;

Timertimer;

staticpublicvoidmain(String[]args){

DrumBeaterdrumBeater=newDrumBeater();

JiaMujiaMu=newJiaMu(null);

jiaMu.setSuccessor(newJiaShe(newJiaZheng(newJiaBaoYu(newJiaHuan(

jiaMu)))));

drumBeater.startBeating

(1);

firstPlayer=jiaMu;

firstPlayer.handle();

}

publicvoidstartBeating(intstopInSeconds){

System.out.println("Drumbeatingstarted...");

timer=newTimer();

timer.schedule(newStopBeatingReminder(),stopInSeconds*1000);

}

classStopBeatingReminderextendsTimerTask{

publicvoidrun(){

System.out.println("Drumbeatingstopped!

");

stopped=true;

timer.cancel();//Terminatethetimerthread

}

}

}

十八、命令(Command)模式

(1)示例类图

(2)示例代码清单

packagemand;

publicinterfaceCommand{

voidexecute();

}

packagemand;

publicclassConcreteCommandimplementsCommand{

publicConcreteCommand(Receiverreceiver){

this.receiver=receiver;

}

publicvoidexecute(){

receiver.action();

}

/**

*@directed

*@clientRolereceiver

*/

privateReceiverreceiver;

}

packagemand;

publicclassInvoker{

publicInvoker(Commandcommand){

mand=command;

}

publicvoidaction(){

command.execute();

}

/**

*@linkaggregation

*@directed

*/

privateCommandcommand;

}

packagemand;

publicclassReceiver{

publicReceiver(){

//writecodehere

}

publicvoidaction(){

System.out.println("Actionhasbeentaken.");

}

}

packagemand;

publicclassClient{

publicstaticvoidmain(String[]args){

Receiverreceiver=newReceiver();

Commandcommand=newConcreteCommand(receiver);

Invokerinvoker=newInvoker(command);

invoker.action();

}

}

(3)其它示例类图

十九、备忘录(Memento)模式:

又称快照(Snapshot)模式或Token模式

1、“白箱”备忘录模式

(1)示例类图

(2)示例代码清单

packagecom.javapatterns.memento.whitebox;

publicclassMemento{

privateStringstate;

publicMemento(Stringstate){

this.state=state;

}

publicStringgetState(){

returnthis.state;

}

publicvoidsetState(Stringstate){

this.state=state;

}

}

packagecom.javapatterns.memento.whitebox;

publicclassOriginator{

privateStringstate;

/**

*@linkdependency

*@labelwide

*/

/*#MementolnkMemento;*/

publicMementocreateMemento(){

returnnewMemento(state);

}

publicvoidrestoreMemento(Mementomemento){

this.state=memento.getState();

}

publicStringgetState(){

returnthis.state;

}

publicvoidsetState(Stringstate){

this.state=state;

System.out.println("Currentstate="+this.state);

}

}

packagecom.javapatterns.memento.whitebox;

publicclassCaretaker{

/**

*@linkaggregation

*@labelwide

*/

privateMementomemento;

publicMementoretrieveMemento(){

returnthis.memento;

}

publicvoidsaveMemento(Mementomemento){

this.memento=memento;

}

}

packagecom.javapatterns.memento.whitebox;

publicclassClient{

privatestaticOriginatoro=newOriginator();

privatestaticCaretakerc=newCaretaker();

publicstaticvoidmain(String[]args){

o.setState("On");

//Storeinternalstate

c.saveMemento(o.createMemento());

//Continuechangingoriginator

o.setState("Off");

//Restoresavedstate

o.restoreMemento(c.retrieveMemento());

}

}

2、“白箱”备忘录模式

(1)示例类图

(2)示例代码清单

packagecom.javapatterns.memento.blackbox;

publicinterfaceMementoIF{

}

packagecom.javapatterns.memento.blackbox;

classMementoimplementsMementoIF{

privateStringsavedState;

/**

*@directed

*@labelIs-a-member-of

*/

privateOriginatorlnkOriginator;

privateMemento(StringsomeState){

savedState=someState;

}

privatevoidsetState(StringsomeState){

savedState=someState;

}

privateStringgetState(){

returnsavedState;

}

}

packagecom.javapatterns.memento.blackbox;

publicclassOriginator{

publicOriginator(){

}

privateStringstate;

/**

*@linkdependency

*@labelwide

*/

/*#MementoIFlnkMementoIF;*/

publicMementoIFcreateMemento

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2