抽象工厂模式

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

 

 

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();

    }
}

posted @   平安喜乐×  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示