欢迎来到天天文库
浏览记录
ID:32658033
大小:48.42 KB
页数:21页
时间:2019-02-14
《java开发中的23种设计模式详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、从追MM谈Java的23种设计模式1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是牛产鸡翅的Factory.工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。程序代码以下是引用片段:Java代码I.publciclassSample{2
2、3.}4.4.publicclassAextendsSamplef•♦.♦•7.)&9.publicclassBextendsSample{10II.}工厂类处于决泄实例化那个产品类的中心位置Java代码1.publicclassFactory{2.2.〃静态工厂方法,无必要再去实例化这个工厂类,增加没有必要的代码3.publicstaticSamplecreate(intwhich){4.if(which==l)5.returnnewA();6.if(which二二2)7.returnnewB();8.}9.
3、}使用简单工厂初始化一个类Java代码1.SamplenewSample=Factory,create(1);2.工厂方法模式植物接口及两个实现类Java代码1.publicinterfacePlant{)2.2.publicclassPlantAimplementsPlant{3.}5.4.publicclassPlantBimplementsPlant{5.}水果接口及两个实现类Java代码LpublicinterfaceFruit{}2.1.publicclassFruitAimplementsFruit
4、{2.}5.3.publicclassFruitBimplementsFruit}4.}抽象工厂Java代码1・publicinterfaceAbstractFactory{2.publicPlantcreatePlant();3.publicFruitcreatFruit();4.}工厂类AJava代码1.publicClassFactoryAimplementsAbstractFactory{2.publicPlantcreatePlant(){3.returnnewPlantA();4.}5.public
5、FruitcreatFruit(){6.returnnewFruitA();7.}8-}工厂类BJava代码1.publicClassFactoryBimplementsAbstractFactory{2.publicPlantcreatePlant(){3.returnnewPlantB();4.}5.publicFruitcreatFruit(){6.returnnewFruitB();7.}8.}工厂模式分为三种:SimpleFactory模式专门泄义一个类来负责创建其它类的实例,被创建的实例通常都具有共
6、同的父类。FactoryMethod模式将对彖的创建交由父类中定义的一个标准方法来完成,而不是其构造函数,究竟应该创建何种对象由具体的子类负责决定。AbstractFactory模式提供一个共同的接口來创建相互关联的多个对象。一、SimpleFactory模式:水果接口:Fruit.javapackagedesignpattem.factory.simplefactory;publicinterfaceFruit{voidplant();voidenableEat();}苹果类实现水果接口:Apple.java
7、packagedesignpattem.factory.simplefactory;publicckissAppleimplementsFruit{@OverridepublicvoidenableEat(){System.out.printlnC'EatApple1');@Overridepublicvoidplant(){System.out.println(nPlanApple*1);}}葡萄类实现水果接口:Grape.javapackagedesignpattern.factory.simplefact
8、ory;publicclassGrapeimplementsFruit{@OverridepublicvoidenableEat(){System.out.println(HEatGrape11);1@Overridepublicvoidplant(){System.out.println(,,PlantGrape");11买水果工厂类,可根据不同的参数类型返回对应的实例:FruitF
此文档下载收益归作者所有