java: 抽象工厂模式 Abstract Factory(Kit/ToolKit)

2023-11-07

/**
 * 版权所有 2022 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * 抽象工厂 Abstract Factory(Kit/ToolKit)
 * 历史版本: JDK 14.02
 * 2022-09-12 创建者 geovindu
 * 2022-09-12 添加 Lambda
 * 2022-09-12 修改:date
 * 接口类
 * 2022-09-12 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc Fruit.java
 *
 * */


package com.javapatterns.abstractfactory;

/**
* 水果
 * @author geovindu
* */
public interface Fruit {

    /**
     *
     * 生长
     * */
    void Grow();
    /**
     * 收获
     * */
    void Harvest();
    /**
     *种植
     * */
    void Plant();


}
/**
 * 版权所有 2022 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * 抽象工厂 Abstract Factory(Kit/ToolKit)
 * 历史版本: JDK 14.02
 * 2022-09-12 创建者 geovindu
 * 2022-09-12 添加 Lambda
 * 2022-09-12 修改:date
 * 接口类
 * 2022-09-12 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc Veggie.java
 *
 * */

package com.javapatterns.abstractfactory;

/**
* 蔬菜
 * @author geovindu
* */
public interface Veggie {

    /**
     *
     * 生长
     * */
    void Grow();
    /**
     * 收获
     * */
    void Harvest();
    /**
     *种植
     * */
    void Plant();
    /**
    * 浇水
    * */
    void Watering();
}
/**
 * 版权所有 2022 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * 抽象工厂 Abstract Factory(Kit/ToolKit)
 * 历史版本: JDK 14.02
 * 2022-09-12 创建者 geovindu
 * 2022-09-12 添加 Lambda
 * 2022-09-12 修改:date
 * 接口类
 * 2022-09-12 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc Gardener.java
 *
 * */


package com.javapatterns.abstractfactory;


/**
 *
* 园丁
 * @author geovindu
* */
public interface Gardener {

    /**
     * 水果
     * @param name
     * */
    public Fruit createFruit(String name);
    /**
     * 蔬菜
     * @param  name
    *
    * */
    public Veggie createVeggie(String name);
}
/**
 * 版权所有 2022 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * 抽象工厂 Abstract Factory(Kit/ToolKit)
 * 历史版本: JDK 14.02
 * 2022-09-12 创建者 geovindu
 * 2022-09-12 添加 Lambda
 * 2022-09-12 修改:date
 * 接口类
 * 2022-09-12 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc NorthernFruit.java
 *
 * */


package com.javapatterns.abstractfactory;



/**
 * 北方水果
 * @param
 * @author geovindu
 *
 * */
public class NorthernFruit  implements Fruit{

    private String name;
    /**
     *
     * */
    public NorthernFruit(String name)
    {
        this.name=name;
    }
    /**
     *
     * */
    public String getName()
    {
        return name;
    }
    /**
     *
     * */
    public void setName(String name)
    {
        this.name = name;
    }

    private int treeAge;
    /**
     *
     * */
    @Override
    public void Grow()
    {
        System.out.println("Northern Fruit is growing...");
    }
    /**
     *
     * */
    @Override
    public void Harvest()
    {
        System.out.println("Northern Fruit has been harvested.");
    }
    /**
     *
     * */
    @Override
    public void Plant()
    {
        System.out.println("Northern Fruit has been planted.");
    }
    /**
     *
     * */

    public int getTreeAge()
    {
        return treeAge;
    }
    /**
     *
     * */

    public void setTreeAge(int treeAge)
    {
        this.treeAge = treeAge;
    }



}
/**
 * 版权所有 2022 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * 抽象工厂 Abstract Factory(Kit/ToolKit)
 * 历史版本: JDK 14.02
 * 2022-09-12 创建者 geovindu
 * 2022-09-12 添加 Lambda
 * 2022-09-12 修改:date
 * 接口类
 * 2022-09-12 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc NorthernVeggie.java
 *
 * */

package com.javapatterns.abstractfactory;

/**
 * 北方蔬菜
 * @author geovindu
 * */
public class NorthernVeggie implements Veggie
{
    private String name;
    /**
     *
     * */
    public NorthernVeggie(String name)
    {
        this.name=name;
    }
    /**
     *
     * */
    public String getName()
    {
        return name;
    }
    /**
     *
     * */
    public void setName(String name)
    {
        this.name = name;
    }
    /**
     *
     * */
    @Override
    public void Grow()
    {
        System.out.println("Northern Veggie is growing...");
    }
    /**
     *
     * */
    @Override
    public void Harvest()
    {
        System.out.println("Northern Veggie has been harvested.");
    }
    /**
     *
     * */
    @Override
    public void Plant()
    {
        System.out.println("Northern Veggie has been planted.");
    }
    /**
     *
     * */
    @Override
    public void Watering() {
        System.out.println("Northern Veggie has been watering.");
    }
}
/**
 * 版权所有 2022 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * 抽象工厂 Abstract Factory(Kit/ToolKit)
 * 历史版本: JDK 14.02
 * 2022-09-12 创建者 geovindu
 * 2022-09-12 添加 Lambda
 * 2022-09-12 修改:date
 * 接口类
 * 2022-09-12 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc TropicalFruit.java
 *
 * */

package com.javapatterns.abstractfactory;

/**
 * 热带水果
 * @author geovindu
 * */
public class TropicalFruit implements Fruit{

    private String name;
    /**
     *
     * */
    public TropicalFruit(String name)
    {
        this.name=name;
    }
    /**
     *
     * */
    public String getName()
    {
        return name;
    }
    /**
     *
     * */
    public void setName(String name)
    {
        this.name = name;
    }

    private int treeAge;
    /**
     *
     * */
    public void Grow()
    {
        System.out.println("Tropical Fruit is growing...");
    }
    /**
     *
     * */
    public void Harvest()
    {
        System.out.println("Tropical Fruit has been harvested.");
    }
    /**
     *
     * */
    public void Plant()
    {
        System.out.println("Tropical Fruit has been planted.");
    }
    /**
     *
     * */
    public int getTreeAge()
    {
        return treeAge;
    }
    /**
     *
     * */
    public void setTreeAge(int treeAge)
    {
        this.treeAge = treeAge;
    }

}
/**
 * 版权所有 2022 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * 抽象工厂 Abstract Factory(Kit/ToolKit)
 * 历史版本: JDK 14.02
 * 2022-09-12 创建者 geovindu
 * 2022-09-12 添加 Lambda
 * 2022-09-12 修改:date
 * 接口类
 * 2022-09-12 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc TropicalVeggie.java
 *
 * */


package com.javapatterns.abstractfactory;


/**
 * 热带蔬菜
 * @author geovindu
 * **/
public class TropicalVeggie implements Veggie{

    private String name;
    /**
     *
     * */
    public TropicalVeggie(String name)
    {
        this.name=name;
    }
    /**
     *
     * */
    public String getName()
    {
        return name;
    }
    /**
     *
     * */
    public void setName(String name)
    {
        this.name = name;
    }
    /**
     *
     * */
    @Override
    public void Grow()
    {
        System.out.println("Tropical Veggie is growing...");
    }
    /**
     *
     * */
    @Override
    public void Harvest()
    {
        System.out.println("Tropical Veggie has been harvested.");
    }
    /**
     *
     * */
    @Override
    public void Plant()
    {
        System.out.println("Tropical Veggie has been planted.");
    }
    /**
     *
     * */
    @Override
    public void Watering() {
        System.out.println("Tropical Veggie has been watering.");
    }

}
/**
 * 版权所有 2022 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * 抽象工厂 Abstract Factory(Kit/ToolKit)
 * 历史版本: JDK 14.02
 * 2022-09-12 创建者 geovindu
 * 2022-09-12 添加 Lambda
 * 2022-09-12 修改:date
 * 接口类
 * 2022-09-12 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc TropicalGardener.java
 *
 * */

package com.javapatterns.abstractfactory;


/**
 * 热带园丁
 * @author geovindu
 * */
public class TropicalGardener implements Gardener{

    /**
     *水果
     * @param name
     * */
    public Fruit createFruit(String name)
    {
        return new TropicalFruit(name);
    }

    /**
     *蔬菜
     * @param name
     *
     * */
    public Veggie createVeggie(String name)
    {
        return new TropicalVeggie(name);
    }



}

测 试调用:

            //抽象工故事
            com.javapatterns.abstractfactory.NorthernGardener gardener=new NorthernGardener();
            gardener.setName("geovindu");
            com.javapatterns.abstractfactory.NorthernFruit  fruit=(NorthernFruit)gardener.createFruit("苹果");

            fruit.Harvest();
            System.out.println("园丁管理员是:"+gardener.getName()+"种植的水果是:"+fruit.getName());

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java: 抽象工厂模式 Abstract Factory(Kit/ToolKit) 的相关文章

  • 序列化 ArrayList

    我正在尝试编写一个 Android 游戏 即使用户想要返回主菜单或者活动被系统终止 我也希望能够暂停游戏 onSaveInstanceState 似乎并没有给我很大的控制权来决定何时可以读回捆绑包 而且据我所知 捆绑包仅在短时间内有效 所以
  • 调试器不会停止在 Intellij IDEA 中的源代码处

    我有一个相当奇怪的问题 无法使用 Intellij IDEA 解决 我正在解析电子邮件文件org apache james mime4j包裹 但我的邮件文件格式不兼容Date 标头 因此 我从 mime4j 源创建了模块 并从磁盘中删除了
  • 内部/匿名类的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 匿名类和静态内部类的最佳实践 设计和性能方面 是什么 就我个人而言 我认为静态内部类提供了更好的封装 并且应该提供更好的性能 因为它们无法访问类
  • bean 的 CDI @TransactionAttribute

    我正在尝试CDI在测试应用程序上 我有一个DAO它注入一个托管的容器JTA像这样的持久化上下文 public class TestDAO implements Serializable PersistenceContext private
  • Java:Swing:设置JButton的位置

    我想实现以下布局 OK
  • Jboss EAP 7 - 如何从部署中排除隐式模块(javax.jms)?

    我没想到我会来到这里 但经过大量 Google 和 StackOverflow 搜索后 我来到了这里 这就是我的确切问题 https www linkedin com pulse tale two jars marco antonio al
  • TableModel setCellEditable 并自动将值设置回 false

    我目前正在尝试在 JTable 中实现 JPopupMenu 它允许解锁单元格以进行编辑 Override public void actionPerformed ActionEvent e if e getActionCommand Un
  • 在 alpine / Jprofile 10 中运行 jpenable 时出现 UnsatisfiedLinkError

    当运行 jpenable 以允许在运行 JDK 8 的 alpine 3 3 容器中对 Jprofiler10 进行分析时 我收到 UnsatisfiedLinkError 异常 有任何想法吗 ERROR The agent could n
  • Android Fabric Crashlytics 崩溃,初始化时未找到资源

    我从 google play 控制台收到了这份报告 看起来 Fabric 在启动时崩溃了 因为某些用户出现了资源未找到的异常 java lang RuntimeException at android app ActivityThread
  • 如何在 SpringBoot v3.0.0 中使用嵌入式 MongoDB?

    我正在尝试连接嵌入式 mongodb 并使用 MongoDbSpringIntegrationTest 对其进行测试 问题是相同的代码在 2 7 7 中适用于 spring boot 但在 3 0 0 中不适用于 spring boot 问
  • 为什么我无法使用 HttpUrlConnection 上传第一个文件块?

    在我的项目中 我应该从一台服务器逐块下载文件 并将每个块立即上传到另一台服务器 我有一个应该下载的文件的 URL 我们就这样称呼它吧downloadUrl 因此 这就是我逐块下载文件的方式 val chunkSize 1024 1024 B
  • 如何在列表视图中选择时启用视频序列自动播放?

    大家好 有人可以与我分享一下我如何编写我的 viewvideo java 类 以便它允许自动播放视频功能 自动排序在列表视图中播放所选视频的任务 从当前位置到最新录制的视频 按顺序直到最新的视频播放完毕 这类似于 YouTube 自动播放功
  • jasper 报告文件中出现错误

    首先 我在 iReport 5 1 0 中创建一个 R D1 jrxml 文件 我执行该报告的 Java 代码如下所示 import java sql Connection import java sql DriverManager imp
  • 如何让 Camel FTP 按需只获取一次

    我对骆驼还很陌生 我一直在尝试让 Camel 根据需要仅通过 FTP 获取单个文件一次 我无法让它发挥作用 这是我尝试过的 让我知道什么是最好的方法以及我的代码有什么问题 1 读取文件后发送一条空消息当收到空消息时 停止路由 from di
  • 如何预先填充 JFileChooser 将“文件名”?

    我打算用数据库中的名称填充 JFileChooser 但使用标准 JFileChooser 对话框进行加载 删除 保存和另存为 我想给用户留下这样的印象 他们正在处理文件系统 而在后端使用数据库来保存更改 用户不应该能够浏览到不同的目录进行
  • 不鼓励在Web应用程序中使用线程吗?

    我们与同事就在 Java 的 Web 应用程序中使用线程进行了激烈的讨论 他们的观点是 不建议在 Java Web 应用程序中使用线程 因为它们不受容器管理 一般来说 我对此表示同意 因为线程可能会干扰容器 但是 如果它不是 Java EE
  • 找出对象列表中是否包含具有指定字段值的内容?

    我有一个从数据库收到的 DTO 列表 它们有一个 ID 我想确保我的列表包含具有指定 ID 的对象 显然 在这种情况下创建具有预期字段的对象不会有帮助 因为 contains 调用 Object equals 并且它们不会相等 我想出了这样
  • 如何将字符串解析为map

    有一个像A B C D E F这样的字符串 如何将其解析为map 我会使用拆分 String text A B C D E F Map
  • 如何将元素添加到通用集合

    我想知道如何将专用对象添加到通用集合中 我正在使用以下代码 Collection
  • Android NDK - 仅用 C/C++ 编写

    有没有一种可能的方法可以使用 C C 编写整个 NDK 应用程序 而无需像 hello jni 示例项目 HelloJni java 中那样的 Java 入门 类 以某种方式创建一个 HelloJni c 来执行相同的操作 从 Androi

随机推荐

  • ap忘记管理ip地址怎么办_路由器刷集客固件,低成本实现AC+AP组网

    某讯K2T路由器刷集客固件 可以作为无线AP使用 多个K2T实现无缝漫游功能 通过微AC或者ESXI安装集客AC可以实现对AP进行管理 低成本的实现AC AP组网 确定版本号140版本 158以上版本的需要拆机 操作步骤 第一步 开启tel
  • 2019中国城市排名出炉——2019新一线城市有没有你的家乡!?

    新一线城市研究所在上海发布 2019城市商业魅力排行榜 新一线城市研究所收集了170个主流消费品牌的商业门店数据 18家各领域头部互联网公司的用户行为数据和数据机构的城市大数据 对337个中国地级及以上城市进行了评估 排行榜沿用了上一年的五
  • java集合框架

    这图画的真洒脱 光一个stack就有很多可探索了
  • 那些年踩过的坑——服务器中文路径

    从11年学编程至今已有十个年头 其实有时候也很后悔选择这个专业 整日和电脑相偎相依 人的思维和沟通能力也趋向机器 和别人聊天也不知道怎么开口 算法的一个评定标准就是以最少的语句实现所需的功能 但和别人聊天则不能这样 太直接简单会让人变得无趣
  • 总结了9款Mac端超好用的免费开源软件,你还有更好的推荐吗?

    与Windows相比 Mac上的软件 不仅不稀缺 并且大多数都更加精致 还没有乱七八糟烦人的弹窗骚扰 所以 本期就为大家盘点盘点Mac上有超好用的免费开源神器 1 Tincta 官网 https codingfriends github i
  • glibc堆内存管理

    glibc堆内存管理 背景 应用出现SIGABRT crash 报错信息为 malloc invalid size unsorted 即是在应用调用malloc分配内存时出现异常导致的crash 管理结构 进程虚拟地址空间被划分为代码段 数
  • eclipse下JNI的初步实现

    eclipse下JNI的初步实现 JNI java native interface 为java应用程序提供调用本地方法的接口 The standard Java class library may not support the plat
  • build打包后怎么查看源码 vue_vue2源码解析一:打包与构建流程

    本系列文章 基于vue 2 6 11进行解析 不追究每行代码分析清楚 但求把握大体的重点 比如源码构建流程 如何实现数据双向绑定 如何解析模板 如何解析一个组件的data method computed等属性 如何实现在weex web等多
  • LeetCode-1326. Minimum Number of Taps to Open to Water a Garden

    There is a one dimensional garden on the x axis The garden starts at the point 0 and ends at the point n i e The length
  • 深圳大学软件工程MOOC章节测试答案

    第一章 章节测试 一 单选题 共 90 00 分 1 下列 不是软件工程方法学中的要素 A 方法 B 工具 C 程序 D 过程 满分 10 00 分 得分 10 00 分 你的答案 C 教师评语 暂无 2 软件工程方法学的目的是 使软件生产
  • RK3588s imx415相机适配及ISP调优系列(三)--- RKISP调试环境配置

    经过上篇的相机配置后 两个mipi相机已经可以正常出图了 其实对于rk系列如何配置mipi相机 网上已有不少相关资料均可参考借鉴 RK3588s imx415相机适配及ISP调优系列 一 RK3588s imx415相机适配及ISP调优系列
  • Fast DDS入门二、Fast DDS在Windows平台的编译安装

    Fast DDS入门五 在Windows平台创建一个简单的Fast DDS示例程序 1 Fast DDS动态库的编译安装 本节提供了在Windows环境中从源代码安装Fast DDS的说明 将安装以下软件包 foonathan memory
  • Storcli工具linux命令

    storcli命令使用 设置其他盘的JBOD模式 使用storcli64工具进行查看RAID状态 storcli64 c0 show 使用storcli64工具进行删除RAID storcli64 c0 vall del force 例如
  • 具有最大和的连续子数组(动态规划法)

    题目 给定一个整数数组 nums 找到一个具有最大和的连续子数组 子数组最少包含一个元素 返回其最大和 示例 1 输入 nums 2 1 3 4 1 2 1 5 4 输出 6 解释 连续子数组 4 1 2 1 的和最大 为 6 思路 动态规
  • apollo 轨迹预测介绍

    转自 http www iheima com article 178452 html 对于纵向轨迹的采样 我们需要考虑巡航 跟车或超车 停车这三种状态 作者 许珂诚 编辑 Natalie 大家好 我是来自百度智能驾驶事业群的许珂诚 今天很高
  • Android中使用log4j2

    Log4j2 的配置 使用 最近公司让调研log4j2在Android中的使用 在网上查了很多资料 在这做个总结 一起学习 参考了许多文章 文末都有链接 感谢大佬们的文章 Log4j2 简介 log4j2是log4j 1 x 的升级版 20
  • 多租户分库分表技术文档

    分库分表技术文档 2022 07 13 李某某 1需求 1 1多租户实现分库分表 1 2系统实现主从数据源 2系统功能 2 1多租户实现分库分表 2 1 1功能描述 根据租户的数量和租户的自定义编号实现对应的分库和分表 假设现有租户1001
  • C ++中的std :: nth_element()

    The standard library of C has a huge number of functions that are not so explored but can be very handy in case of speci
  • 彻底删除Vscode所有数据

    1 先卸载源程序文件 在安装更目录找到unins000 exe 点击进行卸载 2 删除Vscode插件 此路径是C Users Administrator 此文件名是当前PC的登录用户名 进入目录后找到 vscode 进行删除 3 删除个人
  • java: 抽象工厂模式 Abstract Factory(Kit/ToolKit)

    版权所有 2022 涂聚文有限公司 许可信息查看 描述 抽象工厂 Abstract Factory Kit ToolKit 历史版本 JDK 14 02 2022 09 12 创建者 geovindu 2022 09 12 添加 Lambd