欢迎来到天天文库
浏览记录
ID:49411779
大小:90.93 KB
页数:8页
时间:2020-02-06
《工厂模式在java中的应用.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、工厂模式简单工厂通常是一个用来创建其他对象的对象。工厂是构造方法的抽象,用来实现不用的分配方案。工厂对象通常包含一个或多个方法,用来创建这个工厂所能创建的各种类型的对象。这些方法可能接收参数,用来指定对象创建的方式,最后返回创建的对象。工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式代码举例//几个Button类classButton{/*...*/}classWinButtonextendsButton{/*...*/}classMacButtonextendsButt
2、on{/*...*/}//它们的工厂类interfaceButtonFactory{abstractButtoncreateButton();}classWinButtonFactoryimplementsButtonFactory{ButtoncreateButton(){returnnewWinButton();}}classMacButtonFactoryimplementsButtonFactory{ButtoncreateButton(){returnnewMacButton();}}代码案例:有一个Butto
3、n类表示按钮,另有它的两个子类WinButton和MacButton分别代表Windows和Mac风格的按钮,那么这几个类和用于创建它们的工厂类在Java中可以如下实现(在此省略所有类和方法的可见性设置):简单工厂模式基本架构工厂(Creator)角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。抽象产品(Product)角色简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。具体产品(ConcreteProduct)角色是简单工厂模式的创建目标,
4、所有创建的对象都是充当这个角色的某个具体类的实例。适用性下列情况可以考虑使用工厂方法模式:创建对象需要大量重复的代码。创建对象需要访问某些信息,而这些信息不应该包含在复合类中。创建对象的生命周期必须集中管理,以保证在整个程序中具有一致的行为。当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。抽象工厂模式代码实现代码内容定义个人信息package
5、tw.idv.javax.demo.Interface;importjava.util.Calendar;publicinterfacePersonInterface{publicstaticfinalStringROLE=PersonInterface.class.getName();publicabstractStringgetId()throwsException;publicabstractvoidsetId(Stringid)throwsException;publicabstractStringgetName
6、()throwsException;publicabstractvoidsetName(Stringname)throwsException;publicabstractCalendargetBirthday()throwsException;publicabstractvoidsetBirthday(Calendarbirthday)throwsException;}}对个人信息进行实现packagetw.idv.javax.demo.Implements;importjava.util.Calendar;import
7、tw.idv.javax.demo.Interface.PersonInterface;publicabstractclassPersonInterfaceImplimplementsPersonInterface{privateStringid=null;privateStringname=null;privateCalendarbirthday=null;publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id;}publicStringge
8、tName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicCalendargetBirthday(){returnbirthday;}publicvoidsetBirthday(Calendarbirthday){this.birt
此文档下载收益归作者所有