实验4:抽象工厂模式

实验4:抽象工厂模式

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

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

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

 
   

 


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

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

 

实验要求:

1.画出对应的类图;

 

2.提交源代码;

Java:

1.BlackFactory

public class BlackFactory implements HumanFactory{
    @Override
    public Woman createWoman() {
        return new BLackWoman();
    }

    @Override
    public Man createMan() {
        return new BlackMan();
    }
}

2.BlackMan

public class BlackMan implements Man{
    @Override
    public void manEat() {
        System.out.println("black man eat");
    }
}

3.BlackWoman

public class BLackWoman implements Woman{
    @Override
    public void womanEat() {
        System.out.println("black woman eat");
    }
}

 

4.WhiteFactory

public class WhiteFactory implements HumanFactory{
    @Override
    public Woman createWoman() {
        return new WhiteWoman();
    }

    @Override
    public Man createMan() {
        return new WhiteMan();
    }
}

5.WhiteMan

public class WhiteMan implements Man{
    @Override
    public void manEat() {
        System.out.println("white man eat");
    }
}

6.WhiteWoman

public class WhiteWoman implements Woman{
    @Override
    public void womanEat() {
        System.out.println("white woman eat");
    }
}

7.YellowFactory

public class YellowFactory implements HumanFactory{
    @Override
    public Woman createWoman() {
        return new YellowWoman();
    }

    @Override
    public Man createMan() {
        return new YellowMan();
    }
}

8.YellowMan

public class YellowMan implements Man{
    @Override
    public void manEat() {
        System.out.println("yellow man eat");
    }
}

9.YellowWoman

public class YellowWoman implements Woman{
    @Override
    public void womanEat() {
        System.out.println("yellow woman eat");
    }
}

10.HumanFactory

public interface HumanFactory {
     Woman createWoman();
     Man createMan();
}

 

11.Man

public interface Man {
    void manEat();
}

12.Woman

public interface Woman {
    void womanEat();
}

 

C++

#include "stdafx.h"

using namespace std;

class Man;

class Woman;

class AbstractFactory{

public:

virtual Man* createMan() = 0;

virtual Woman* createWoman() = 0;

};

class Man

{

public:

virtual void maneat() = 0;

};

class Woman

{

public:

virtual void womaneat() = 0;

};

class YellowMan :public Man

{

public:

void maneat() {

cout << "Yellow man" << endl;

}

};

class YellowWoman :public Woman

{

public:

void womaneat() {

cout << "Yellow woman" << endl;

}

};

class BlackMan :public Man

{

public:

void maneat() {

cout << "Black man" << endl;

}

};

class BlackWoman :public Woman

{

public:

void womaneat() {

cout << "Black woman" << endl;

}

};

class WhiteMan :public Man

{

public:

void maneat() {

cout << "white man" << endl;

}

};

class WhiteWoman :public Woman

{

public:

void womaneat() {

cout << "white woman" << endl;

}

};

class YellowHumanFactory :public AbstractFactory

{

public:

YellowMan* createMan(){

return new YellowMan();

}

YellowWoman* createWoman(){

return new YellowWoman();

}

};

class BlackHumanFactory :public AbstractFactory

{

public:

BlackMan* createMan(){

return new BlackMan();

}

BlackWoman* createWoman(){

return new BlackWoman();

}

};

class WhiteHumanFactory :public AbstractFactory

{

public:

WhiteMan* createMan(){

return new WhiteMan();

}

WhiteWoman* createWoman(){

return new WhiteWoman();

}

};

class Client

{

public:

AbstractFactory* abstractFactory;

Man* man;

Woman* woman;

void excute(){

for (int i = 0; i < 3; i++)

{

if (i==0)

abstractFactory = new YellowHumanFactory();

else if (i==1)

abstractFactory = new WhiteHumanFactory();

else

abstractFactory = new BlackHumanFactory();

man = abstractFactory->createMan();

woman = abstractFactory->createWoman();

man->maneat();

woman->womaneat();

}

}

};

int _tmain(int argc, _TCHAR* argv[])

{

Client* client = new Client();

client->excute();

system("pause");

return 0;

}

3.注意编程规范。

posted @ 2022-10-19 21:19  萧贾jzm  阅读(41)  评论(0编辑  收藏  举报
//歌单id