Java工厂模式的使用细则介绍.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Java工厂模式的使用细则介绍

目录工厂模式简单工厂模式工厂方法模式抽象工厂模式

工厂模式

工厂模式顾名思义就是生产实例的工厂,使用工厂模式不会在程序中使用new关键字创建实例。而是将创建对象的细节隐藏,对外提供统一的方法,外部通过该方法获取实例。以此降低调用者与程序之间的耦合性,更加灵活

工厂模式可以分为三类

简单工厂模式工厂方法模式抽象工厂模式

简单工厂模式

定义一个接口,将创建对象和其本身的业务分离解耦,如下示例:

publicinterfacePet{

voidshout();

publicclassCatimplementsPet{

publicvoidshout(){

System.out.println(猫叫);

publicclassDogimplementsPet{

publicvoidshout(){

System.out.println(狗叫);

//宠物工厂

publicclassPetFactory{

//方式一

publicstaticPetgetPet(Stringpet){

if(pet.equals(小猫)){

returnnewCat();

}elseif(pet.equals(小狗)){

returnnewDog();

}else{

returnnull;

//方式二

publicstaticPetgetCat(){

returnnewCat();

publicstaticPetgetDog(){

returnnewDog();

//用户类

publicclassCustomer{

publicstaticvoidmain(String[]args){

Petpet=PetFactory.getPet(小猫);

pet.shout();

//输出:猫叫

如上述代码所示,创建对象只需要直接调用PetFactory工厂的创建方法即可,根据用户需求来创建指定对象,执行对应方法

工厂方法模式

工厂方法模式相对于简单工厂,提高了拓展性,可以在不影响原有类的情况下实现横向扩展其他类,但是代码量加大,可能会产生更多的代码冗余。

我们针对每一个类都为其设置单独的工厂,即每个工厂只生产一种类型,如果在需要新增其他类型那么只需要创建其工厂提供获取实例方法即可

publicinterfacePet{

voidshout();

publicclassCatimplementsPet{

publicvoidshout(){

System.out.println(猫叫);

publicclassCatFactory{

publicstaticPetgetCat(){

returnnewCat();

publicclassCustomer{

publicstaticvoidmain(String[]args){

Petcat=CatFactory.getCat();

cat.shout();

使用工厂方法模式可以再不修改原有代码的基础上继续扩展,但是工作量较大

对比简单工厂和工厂方法模式:就代码和结构的复杂度,使用简单工厂模式更加简便,但是对于可拓展性则工厂方法模式更加优越

抽象工厂模式

抽象工厂用于常见一系列相关对象的家族,抽象的意思是,我们会定义一个工厂接口并且不做任何实现,只用来约束它的实现工厂生产产品的规范。

四大核心:抽象工厂、具体工厂、抽象产品、具体产品

以华为、小米生产手机和电视为例:

代码如下:

//工厂接口

publicinterfaceProductFactory{

RouterProductgetRouter();//生产路由器

PhoneProductgetPhone();//生产手机

//手机、路由器接口

publicinterfacePhoneProduct{voidclose();}

publicinterfaceRouterProduct{voidstart();}

//工厂

publicclassHuaweiFactoryimplementsProductFactory{

publicRouterProduct

文档评论(0)

157****2177 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档