首页 > 其他分享 >抽象工厂模式

抽象工厂模式

时间:2024-12-29 20:31:15浏览次数:5  
标签:show Gender 模式 工厂 抽象 Skin Override new public

使用抽象工厂模式,完成下述产品等级结构:

 

 

1. 画出对应的类图;

 

 

 

2. 提交源代码;

public interface Skin {
    void show();
}

public interface Gender {
    void show();
}

public interface HumanFactory {

    Skin createSkin();
    Gender createGender();
}

public class WhiteSkin implements Skin {
    @Override
    public void show() {
        System.out.println("White skin");
    }
}

public class YellowSkin implements Skin {
    @Override
    public void show() {
        System.out.println("Yellow skin");
    }
}

public class BlackSkin implements Skin {
    @Override
    public void show() {
        System.out.println("Black skin");
    }
}

public class AfricanHumanFactory implements HumanFactory {
    @Override
    public Skin createSkin() {
        return new BlackSkin();
    }

    @Override
    public Gender createGender() {
        // 根据具体需求选择性别
        return new MaleGender(); // 示例为男性
    }

}

public class AsianHumanFactory implements HumanFactory {
    @Override
    public Skin createSkin() {
        return new YellowSkin();
    }

    @Override
    public Gender createGender() {
        // 根据具体需求选择性别
        return new FemaleGender(); // 示例为女性
    }
}

public class CaucasianHumanFactory implements HumanFactory {
    @Override
    public Skin createSkin() {
        return new WhiteSkin();
    }

    @Override
    public Gender createGender() {
        // 根据具体需求选择性别
        return new FemaleGender(); // 示例为女性
    }
}

public class FemaleGender implements Gender {
    @Override
    public void show() {
        System.out.println("Female gender");
    }
}

public class MaleGender implements Gender {
    @Override
    public void show() {
        System.out.println("Male gender");
    }
}

public class Main{

    public static void main(String[] args) {
        HumanFactory asianFactory = new AsianHumanFactory();
        Skin asianSkin = asianFactory.createSkin();
        Gender asianGender = asianFactory.createGender();
        asianSkin.show();
        asianGender.show();

        HumanFactory africanFactory = new AfricanHumanFactory();
        Skin africanSkin = africanFactory.createSkin();
        Gender africanGender = africanFactory.createGender();
        africanSkin.show();
        africanGender.show();

        HumanFactory caucasianFactory = new CaucasianHumanFactory();
        Skin caucasianSkin = caucasianFactory.createSkin();
        Gender caucasianGender = caucasianFactory.createGender();
        caucasianSkin.show();
        caucasianGender.show();

    }
}

标签:show,Gender,模式,工厂,抽象,Skin,Override,new,public
From: https://www.cnblogs.com/pinganxile/p/18639503

相关文章

  • 建造者模式
    [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。  源代码:interfaceBuilder{    voidsetCPU(Stringcpu);    voidsetRam(intram);  ......
  • 原型模式
    [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。  #include<iostream>#include<stdexcept> classVector{private:    int*elements;//指向向量元素的指针......
  • redis-2(集群模式)
    主从模式(master-slave)实战规划图实际配置1,克隆主机,以redis1为基础,克隆出redis2和32,配置IP和主机名称,重启,使用xshell链接vi/etc/sysconfig/network-scripts/ifcfg-ens33:1521->22vi/etc/hostname:1redis2reboot重启使用xshell或者finalShell链接......
  • Java难绷细节02---抽象类中只能有抽象方法吗以及有关抽象类的细节探讨
    Java难绷细节02---抽象类中只能有抽象方法吗以及有关抽象类的细节探讨标题长的像轻小说首先回答标题抛出的问题——False显然,有抽象方法的类是抽象类,但是,抽象类中只能有抽象方法吗?抽象类可以包含抽象方法,也可以包含具体方法如果一个类包含至少一个抽象方法,用abstract关键字修......
  • 微服务架构设计模式PDF免费下载
    适读人群:本书的重点是架构和开发,适合负责开发和交付软件的任何人(例如开发人员、架构师、CTO等)阅读。示例代码使用Java语言和Spring框架世界十大软件架构师之一、微服务架构先驱者亲笔撰写,微服务实用落地指南。示例代码使用Java编程和Spring框架电子版仅供预览,下载后24小时内......
  • 设计模式-工厂和单例模式
    概念和作用分类7大原则工厂模式概念工厂模式是创建型模式,它是对象创建的最佳方案,特别是创建对象过程比较复杂。(如果理解new对象就可以完成功能,不需要用工厂模式)。好处实现对象的创建和使用的解耦。分类简单工厂模式简单工厂模式简介也叫静态工厂模式,可以根据不参数......
  • 从家谱的层级结构 - 组合模式(Composite Pattern)
    组合模式(CompositePattern)组合模式(CompositePattern)组合模式概述组合模式涉及的角色talkischeap,showyoumycode总结组合模式(CompositePattern)组合模式(CompositePattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次关系。组......
  • 中介者模式
    实验19:中介者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解中介者模式的动机,掌握该模式的结构;2、能够利用中介者模式解决实际问题。    [实验任务一]:虚拟聊天室在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,......
  • 备忘录模式
    实验 20:备忘录模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解备忘录模式的动机,掌握该模式的结构;2、能够利用备忘录模式解决实际问题。     [实验任务一]:多次撤销改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以......
  • 观察者模式
    实验21:观察者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解观察者模式的动机,掌握该模式的结构;2、能够利用观察者模式解决实际问题。    [实验任务一]:股票提醒当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的......