欢迎来到天天文库
浏览记录
ID:38534138
大小:29.00 KB
页数:4页
时间:2019-06-14
《java设计模式-适配器模式的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、客户端通过类的接口访问提供的服务,一般现有类可提供用户的所需功能,而有时不能满足用户的期望。例如有两个毫无关联的类组合在一起使用,要么就是修改各自的接口,但是在不修改各自接口的前提下,应该怎么做呢?使用Adapter模式,使得原本需要修改接口的才能在一起工作的两个类可以通过此模式不进行修改接口,在一起工作。举个例子,面包制作商可以制作面包,蛋糕制作商可以制作蛋糕,某工厂以前请了面包制作商只做面包,而现在还要制作蛋糕。传统方法增加一个蛋糕制作的接口,并且在实现中增加制作蛋糕的实现。Java代码publicinterfaceMakeFactory{StringgetCake
2、();StringgetBread();}publicinterfaceMakeFactory{StringgetCake();StringgetBread();}实现:Java代码publicclassMakeFactoryImplimplementsMakeFactory{publicStringgetBread(){//TODOAuto-generatedmethodstubreturnnull;}publicStringgetCake(){//TODOAuto-generatedmethodstubreturnnull;}}publicclassMakeFact
3、oryImplimplementsMakeFactory{publicStringgetBread(){//TODOAuto-generatedmethodstubreturnnull;}publicStringgetCake(){//TODOAuto-generatedmethodstubreturnnull;}}这样就ok了。但是想想,以前他是做面包的,有做面包的一套体制,如果再把做蛋糕加进去,工序有可能会乱。并且无法工作。这样我们可以通过Adapter模式。Java代码/***Adaptee被适配器**/publicclassMakeBread{publicStr
4、inggetBread(){System.out.println("++++++bread++++");return"bread";};}/***Adaptee被适配器**/publicclassMakeBread{publicStringgetBread(){System.out.println("++++++bread++++");return"bread";};}以前我只有一个面包房,现在我还要蛋糕房Java代码publicinterfaceMakeFactory{StringgetCake();StringgetBread();}publicinterfaceM
5、akeFactory{StringgetCake();StringgetBread();}最后看看如何通过适配器模式,将不相连的两个类配在一起工作。Java代码/***Adapter适配器**/publicclassMakeCakeextendsMakeBreadimplementsMakeFactory{publicStringgetCake(){System.out.println("++++++cake++++");return"cake";};}/***Adapter适配器**/publicclassMakeCakeextendsMakeBreadimpleme
6、ntsMakeFactory{publicStringgetCake(){System.out.println("++++++cake++++");return"cake";};}这样做,我们的MakeFactory工厂就可以有条不紊的进行制作。我们测试一下Java代码publicclassClient{/***@paramargs*/publicstaticvoidmain(String[]args){MakeCakem=newMakeCake();m.getCake();m.getBread();}}publicclassClient{/***@paramargs*
7、/publicstaticvoidmain(String[]args){MakeCakem=newMakeCake();m.getCake();m.getBread();}}测试结果++++++cake++++++++++bread++++从这里不难看出,此接口可以满足用户的需要。时,成员对象的实体也被复制了。
此文档下载收益归作者所有