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

发布时间 - 2026-01-10 22:47:45    点击率:

工厂方法概述

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

优点

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

 缺点

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

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  # 工厂方法  # 工厂方法详解  # 工厂  # java设计模式之工厂方法详解  # Java静态工厂方法的实例详解  # 工厂方法模式_动力节点Java学院整理  # java设计模式之工厂方法模式  # Java使用设计模式中的工厂方法模式实例解析  # Java设计模式编程之工厂方法模式的使用  # Java设计模式编程中的工厂方法模式和抽象工厂模式  # Java设计模式之工厂方法模式实例简析  # 详解Java从工厂方法模式到 IOC/DI思想  # 要在  # 希望能  # 只需要  # 不需  # 谢谢大家  # 创建工作  # 后期  # 客户端  # 抽象类  # static  # IntegerDemo  # void  # args  # String  # main  # public  # pre  # nbsp  # strong 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在阿里云完成域名注册与建站?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  canvas 画布在主流浏览器中的尺寸限制详细介绍  个人网站制作流程图片大全,个人网站如何注销?  千库网官网入口推荐 千库网设计创意平台入口  Python图片处理进阶教程_Pillow滤镜与图像增强  EditPlus中的正则表达式实战(6)  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  JS中对数组元素进行增删改移的方法总结  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Laravel怎么实现模型属性的自动加密  如何确保西部建站助手FTP传输的安全性?  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  零服务器AI建站解决方案:快速部署与云端平台低成本实践  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  详解jQuery中的事件  如何在建站之星绑定自定义域名?  网站建设整体流程解析,建站其实很容易!  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  如何用AWS免费套餐快速搭建高效网站?  如何在IIS7中新建站点?详细步骤解析  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  智能起名网站制作软件有哪些,制作logo的软件?  javascript基本数据类型及类型检测常用方法小结  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel如何创建自定义Artisan命令?(代码示例)  如何快速完成中国万网建站详细流程?  详解Huffman编码算法之Java实现  如何在Windows服务器上快速搭建网站?  在线制作视频的网站有哪些,电脑如何制作视频短片?  Python函数文档自动校验_规范解析【教程】  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  Laravel如何实现一对一模型关联?(Eloquent示例)  JavaScript如何实现音频处理_Web Audio API如何工作?  如何快速生成凡客建站的专业级图册?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何在IIS中配置站点IP、端口及主机头?  如何基于云服务器快速搭建网站及云盘系统?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  java获取注册ip实例  Laravel如何生成URL和重定向?(路由助手函数)  Android中AutoCompleteTextView自动提示  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门