欢迎来到天天文库
浏览记录
ID:41305609
大小:395.50 KB
页数:111页
时间:2019-08-21
《Java与设计模式》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Java与设计模式面向接口编程、降低耦合性、增加灵活性2008年5月提纲创建模式1结构模式2行为模式32创建模式创建模式SingletonFactoryAbstractFactoryBuilderPrototype3创建模式–Factory(工厂模式)客户类和工厂类分开,消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改4创建模式–Factory(工厂模式)追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基
2、就是生产鸡翅的Factory。5创建模式–Factory(工厂模式)//抽象的创建对象基类publicabstractclassWindow{publicabstractvoidfunc();}//创建对象类publicclassWindowBigextendsWindow{publicvoidfunc(){System.out.println("ThisisBigWindow!");}}//创建对象类publicclassWindowSmallextendsWindow{publicvoidfunc(){System.out.println("ThisisSmallWindow!");}}6
3、创建模式–Factory(工厂模式)//工厂类publicclassFactory{publicWindowCreateWindow(Stringtype){if(type.equals("Big")){returnnewWindowBig();}elseif(type.equals("Small")){returnnewWindowSmall();}else{returnnewWindowBig();}}//TheMainfunctiononlyforourtestpublicstaticvoidmain(String[]args){FactorymyFactory=newFactory()
4、;WindowmyBigWindow=myFactory.CreateWindow("Big");myBigWindow.func();WindowmySmallWindow=myFactory.CreateWindow("Small");mySmallWindow.func();}}7创建模式–AbstractFactory(抽象工厂模式)核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。8创建模式–AbstractFactory(抽象工厂模式)请MM去麦当劳吃汉堡,不同的M
5、M有不同的口味,要每个都记住是一件烦人的事情,我一般采用AbstractFactory模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。9创建模式–AbstractFactory(抽象工厂模式)定义两种墙:publicabstractclassWall{//privateWallwall;publicabstractStringgetName();}publicclassLivingRoomWallextendsWall{privateStringwallName;publicLivingRoomWall(){wallName="LivingRoo
6、mWall";}publicStringgetName(){returnwallName;}}publicclassBedRoomWallextendsWall{privateStringwallName;publicBedRoomWall(){wallName="BedRoomWall";}publicStringgetName(){returnwallName;}}10创建模式–AbstractFactory(抽象工厂模式)//定义两种门:publicabstractclassDoor{//privateDoordoor;publicabstractStringgetName();}pub
7、licclassLivingRoomDoorextendsDoor{privateStringdoorName;publicLivingRoomDoor(){doorName="LivingRoomDoor";}publicStringgetName(){returndoorName;}}publicclassBedRoomDoorextendsDoor{privateStringdoorName
此文档下载收益归作者所有