欢迎来到天天文库
浏览记录
ID:40199707
大小:40.98 KB
页数:25页
时间:2019-07-25
《java设计模式和应用场景》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java常见设计模式应用场景1、抽象工厂应用场景:封装变化点。创建一系列相互依赖的对象。在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在更多系列对象的创建工作。如何应对这各变化如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合。publicabstractClassAbstractFactory{ //创建一系列相互关联的对象如游戏场景中相互关联的Road,Building,Tunnel,Jungle对象 publicabstractProdu
2、ctAcreateProductA(); publicabstractProductBcreateProductB(); /........} //多系列体现在ConcreteFactoryA,ConcreteFactoryB这些具体工厂创建该系列下的多个相互关联的对象 publicclassConcreteFactoryAextendsAbstractFactory{ //具体创建ProductA,ProductB的哪个子类再这里指定,如 //这里相互关联的对象体现在ProductA1和ProductB1够成第一种风格 p
3、ublicProductAcreateProductA(){ returnnewProductA1(); returnnewProductB1(); }} publicclassConcreteFactoryBextendsAbstractFactory{ //具体创建ProductA,ProductB的哪个子类再这里指定,如 publicProductAcreateProductA(){ returnnewProductA2(); returnnewProductB2();
4、}} publicabstractclassProductA{ //其子类是ProductA1,ProductA2 //定义一些接口; publicvoidsomeMethod(); //......} publicabstarctclassProductB{ //其子类是ProductB1,ProductB2 //定义一些接口; publicvoidsomeMethod(); //......} publicclassTest{ ProductAa; ProductBb; publicst
5、aticvoidmain(String[]args){ //客户端要创建不同风格的游戏场景(多系列) AbstractFactoryfactory=newConcreteFactoryA(); ProductAa=factory.createProductA(); ProductBb=factory.createProductB(); play(); //创建另一种风格的游戏场景,只须更改ConcreteFactoryB(); //
6、 //AbstractFactoryfactory=newConcreteFactoryA(); //ProductAa=factory.createProductA(); //ProductBb=factory.createProductB(); //play(); } publicstaticvoidplay(){ a.someMethod(); b.someMethod(); }}2、Builder在软件系统中,有时候面临着“一个复杂对
7、象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。Builder设计模式是应对这样的需求变化:如何提供一种“封装机制”来隔离“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”,不随着需求改变而改变。 //抽象定义如何构建Product及其子对象publicabstractclassBuilder{ //获取整体对象 publicabstractProductgetProduct(); //构建部分对象 publica
8、bstractvoidbuildProductA(); pu
此文档下载收益归作者所有