java  工厂方法详解及实例代码

 更新时间:2017年01月25日 09:45:10   投稿:lqh  
这篇文章主要介绍了java 工厂方法详解及实例代码的相关资料,需要的朋友可以参考下

工厂方法概述

工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。

优点

客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性

 缺点

需要额外的编写代码,增加子工作量

public class IntegerDemo {
  public static void main(String[] args) {
    Factory factory = new DogFactory();
    Animal animal = factory.createAnimal();
    animal.eat();
 
    factory = new CatFactory();
    animal = factory.createAnimal();
    animal.eat();
  }
}
 
abstract class Animal {// 抽象类
  public abstract void eat();
}
 
class Dog extends Animal {// 狗
  public void eat() {
    System.out.println("a dog is eatting.");
  }
}
 
class Cat extends Animal {// 猫
  public void eat() {
    System.out.println("a cat is eatting.");
  }
}
 
interface Factory {// 接口
  public abstract Animal createAnimal();
}
 
class DogFactory implements Factory {// 实现接口
  public Animal createAnimal() {
    return new Dog();
  }
}
 
class CatFactory implements Factory {// 实现接口
  public Animal createAnimal() {
    return new Cat();
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Java中HashTable和HashMap的区别_动力节点Java学院整理

    Java中HashTable和HashMap的区别_动力节点Java学院整理

    HashTable和HashMap主要的区别有:线程安全性,同步(synchronization),以及速度。接下来通过本文给大家简单介绍下HashTable和HashMap的区别,需要的的朋友参考下吧
    2017-04-04
  • java List集合接口的介绍和使用全面教程

    java List集合接口的介绍和使用全面教程

    这篇文章主要为大家介绍了java List集合接口的介绍和使用全面教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Java中的可变参数常见用法实例总结

    Java中的可变参数常见用法实例总结

    这篇文章主要介绍了Java中的可变参数常见用法,结合实例形式总结分析了java可变参数的常见功能、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-10-10
  • 深入了解SpringBoot中的统一返回和统一异常处理

    深入了解SpringBoot中的统一返回和统一异常处理

    这篇文章主要为大家详细介绍了SpringBoot项目中常用的统一返回结果和统一异常处理,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2024-01-01
  • mybatis中foreach嵌套if标签方式

    mybatis中foreach嵌套if标签方式

    这篇文章主要介绍了mybatis中foreach嵌套if标签方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • springboot+vue实现登录功能

    springboot+vue实现登录功能

    这篇文章主要为大家详细介绍了springboot+vue实现登录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • SpringBoot 2.x整合Log4j2日志的详细步骤

    SpringBoot 2.x整合Log4j2日志的详细步骤

    log4j2优越的性能其原因在于log4j2使用了LMAX,一个无锁的线程间通信库代替了,logback和log4j之前的队列,并发性能大大提升,下面这篇文章主要给大家介绍了关于SpringBoot 2.x整合Log4j2日志的相关资料,需要的朋友可以参考下
    2022-10-10
  • 详解spring cloud分布式整合zipkin的链路跟踪

    详解spring cloud分布式整合zipkin的链路跟踪

    这篇文章主要介绍了详解spring cloud分布式整合zipkin的链路跟踪,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • SpringBoot 定制化返回数据的实现示例

    SpringBoot 定制化返回数据的实现示例

    这篇文章主要介绍了SpringBoot 定制化返回数据的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • IDEA2023创建MavenWeb项目并搭建Servlet工程的全过程

    IDEA2023创建MavenWeb项目并搭建Servlet工程的全过程

    Maven提供了大量不同类型的Archetype模板,通过它们可以帮助用户快速的创建Java项目,这篇文章主要给大家介绍了关于IDEA2023创建MavenWeb项目并搭建Servlet工程的相关资料,需要的朋友可以参考下
    2023-10-10

最新评论