一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机,TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用

简介: 该博客文章通过UML类图和Java源码示例,演示了如何使用抽象工厂模式模拟电器工厂生产不同品牌和类型的电器,如海尔和TCL的电视机和空调。

一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机,TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用

一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机,TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用抽象工厂模拟该场景。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实现。

uml类图
在这里插入图片描述
源码:

package 抽象工厂实现电子器件;

public interface DianQiFactory {
    public Kongtiao createkongtiao();//抽象工厂
    public Tv createtv();

}

package 抽象工厂实现电子器件;

public interface Kongtiao {  //空调的抽象产品
    public void display();

}

package 抽象工厂实现电子器件;

public interface Tv {//电视的抽象产品
    public void display();

}

package 抽象工厂实现电子器件;

public class HairerFactory implements DianQiFactory {

    public Kongtiao createkongtiao() {   //海尔工厂生产海尔空调

        return new Hairer_Kong_Tiao();
    }

    public Tv createtv() {                  //海尔工厂生产海尔电视节
        return new Hairer_Tv();
    }

}

package 抽象工厂实现电子器件;

public class TvFactory implements DianQiFactory {

    @Override
    public Kongtiao createkongtiao() {
        // TODO 自动生成的方法存根
        return new Tcl_Kong_tiao();
    }

    @Override
    public Tv createtv() {
        // TODO 自动生成的方法存根
        return new Tcl_Tv();       
    }

}

package 抽象工厂实现电子器件;

public class Hairer_Kong_Tiao implements Kongtiao {

    @Override
    public void display() {
        // TODO 自动生成的方法存根
        System.out.println("海尔空调");

    }

}

package 抽象工厂实现电子器件;

public class Hairer_Tv implements Tv {

    @Override
    public void display() {
        // TODO 自动生成的方法存根
        System.out.println("海尔电视机");

    }

}

package 抽象工厂实现电子器件;

public class Tcl_Kong_tiao implements Kongtiao {

    @Override
    public void display() {
        // TODO 自动生成的方法存根
 System.out.println("TCL空调");
    }

}

package 抽象工厂实现电子器件;

public class Tcl_Tv implements Tv {


    public void display() {
        // TODO 自动生成的方法存根
        System.out.println("TCL电视机");

    }

}

package 抽象工厂实现电子器件;

public class Client {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根

        DianQiFactory factory1, factory2; // 两个抽象工厂
        Kongtiao k1, k2; // 空调两个抽象产品
        Tv tv1, tv2; // 电视机两个抽象产品

        factory1 = new HairerFactory(); // factory1 为具体海尔工厂
        k1 = factory1.createkongtiao();
        tv1 = factory1.createtv();
        k1.display();
        tv1.display();

        factory2 = new TvFactory();// factory2位具体的TCL工厂
        k2 = factory2.createkongtiao();// 工厂创建空调
        tv2 = factory2.createtv();// 工厂创建电视机
        k2.display();
        tv2.display();

    }

}
相关文章
|
编解码 测试技术
【自己动手画CPU】单总线CPU设计(一)
【自己动手画CPU】单总线CPU设计(一)
595 0
|
网络协议 数据库连接 Nacos
nacos常见问题之nacos报错400如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
Java
IDEA 报错:org.apache.jasper.JasperException:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri
IDEA 报错:org.apache.jasper.JasperException:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri
3194 0
IDEA 报错:org.apache.jasper.JasperException:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri
|
7月前
|
缓存 Kubernetes 网络协议
一文掌握k8s的健康检查探针
容器健康检查探针用于检测应用运行状态,确保服务高可用。Kubernetes提供存活、就绪、启动三种探针,通过HTTP、TCP或命令方式定期检查,配合各参数阈值实现自动恢复与流量控制,避免异常实例影响业务。
771 0
|
8月前
|
边缘计算 监控 网络协议
网络延迟优化方案
本文系统阐述网络延迟优化全方案,涵盖架构设计、协议调优、全球加速等十大维度,结合实战案例与最佳实践,助力构建低延迟、高稳定网络体系。
1301 0
|
弹性计算 缓存 网络协议
阿里云国际DDoS高防:添加网站配置指南
本文介绍了将网站域名配置到DDoS高防的步骤和注意事项,包括添加网站配置、填写接入信息、设置转发规则等操作流程,同时详细说明了防护策略、源站配置及DNS切换等关键环节,以确保业务流量顺利切换至高防系统,保障网站安全稳定运行。
阿里云国际DDoS高防:添加网站配置指南
|
人工智能 算法 C++
浅谈 KMP
KMP算法是一种高效的字符串匹配算法,由Knuth、Morris和Pratt提出。它通过预处理模式串构建next数组,利用匹配失败时的信息减少重复比较,从而提升匹配效率。其时间复杂度为O(m+n),适用于大规模文本匹配场景。
664 0
|
安全 物联网安全 物联网
IoT安全危机:智能家居的隐秘威胁
随着物联网技术的发展,智能家居日益普及,但其安全隐患也逐渐显现。本文探讨了智能家居的安全现状、风险及防范措施,强调了企业和用户共同提升安全意识的重要性,旨在构建一个安全可靠的智能家居环境。
|
KVM 虚拟化
KVM虚拟机的热迁移
这篇文章详细介绍了KVM虚拟机的热迁移过程,包括临时迁移和永久迁移的步骤,以及可能遇到的故障和解决方案。
953 1
KVM虚拟机的热迁移