9.13

实验4:抽象工厂模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解抽象工厂模式的动机,掌握该模式的结构;

2、能够利用抽象工厂模式解决实际问题

 

[实验任务一]:人与肤色

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

 

1.画出对应的类图;

2.提交源代码;

3.注意编程规范。

 

 

复制代码
AbsFacrtory.java
public interface AbsFactory {
    public Man produceMan();
    public Woman produceWoman();
} 

Man.java
public interface Man {
    public void introduce();
}

Woman.java
package com.gazikel;

public interface Woman {
    public void introduce();
}
BlackFactory.java
package com.gazikel;

import com.gazikel.black.BlackMan;
import com.gazikel.black.BlackWoman;

public class BlackFactory implements AbsFactory{
    @Override
    public Man produceMan() {
        return new BlackMan();
    }

    @Override
    public Woman produceWoman() {
        return new BlackWoman();
    }
}

WhiteFactory.java
package com.gazikel;

import com.gazikel.white.WhiteMan;
import com.gazikel.white.WhiteWoman;

public class WhiteFactory implements AbsFactory{
    @Override
    public Man produceMan() {
        return new WhiteMan();
    }

    @Override
    public Woman produceWoman() {
        return new WhiteWoman();
    }
}

YellowFactory.java
package com.gazikel;

import com.gazikel.yellow.YellowMan;
import com.gazikel.yellow.YellowWoman;

public class YellowFactory implements AbsFactory {
    @Override
    public Man produceMan() {
        return new YellowMan();
    }

    @Override
    public Woman produceWoman() {
        return new YellowWoman();
    }
}

BlackMan.java
package com.gazikel.black;

import com.gazikel.Man;

public class BlackMan implements Man {
    @Override
    public void introduce() {
        System.out.println("我是黑种男人");
    }
}


Blackwoman.java
package com.gazikel.black;

import com.gazikel.Woman;

public class BlackWoman implements Woman {
    @Override
    public void introduce() {
        System.out.println("我是黑种女人");
    }
}

WhiteMan.java
package com.gazikel.white;

import com.gazikel.Man;

public class WhiteMan implements Man {
    @Override
    public void introduce() {
        System.out.println("我是白种男人");
    }
}


Whitewoman.java
package com.gazikel.white;

import com.gazikel.Man;

public class WhiteMan implements Man {
    @Override
    public void introduce() {
        System.out.println("我是白种男人");
    }
}


YellowMan.java
package com.gazikel.yellow;

import com.gazikel.Man;

public class YellowMan implements Man {
    @Override
    public void introduce() {
        System.out.println("我是黄种男人");
    }
}
YellowWoman.java
package com.gazikel.yellow;

import com.gazikel.Woman;

public class YellowWoman implements Woman {
    @Override
    public void introduce() {
        System.out.println("我是黄种女人");
    }
}
Client.java
package com.gazikel;

import com.gazikel.utils.XMLUtil;

public class Client {
    private AbsFactory factory = null;

    public Client(String type){
        setFactory(type);
    }

    public void setFactory(String type) {
        if ("yellow".equals(type)) {
            factory = new YellowFactory();
        } else if ("black".equals(type)) {
            factory = new BlackFactory();
        } else if ("white".equals(type)) {
            factory = new WhiteFactory();
        }
    }

    public AbsFactory getFactory() {
        return factory;
    }
}
复制代码

 

posted @   奶油冰激凌  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示