抽象工厂模式

软件设计                  石家庄铁道大学信息学院

 

实验4:抽象工厂模式

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

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

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

 
   

 

 

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

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

 

 

 

实验要求:

1.  画出对应的类图;

 

 

 

2.  提交源代码;

import java.util.Scanner;

 

public class Person {

 

 

public static void main(String [] args) {

    SexFactory sex=null;

    ColorFactory color=null;

    int s,c;

    Scanner sc=new Scanner(System.in);

    System.out.println("请输入你要生产的小人的性别 1是女孩 2是男孩");

    s=sc.nextInt();

    System.out.println("请输入你要生产的小人的颜色 1是黄种 2是黑种 3是白种");

    c=sc.nextInt();

   

    System.out.print("您生产了一个");

   

    switch(c) {

    case 1:

        color=new yellowFactory();

        color.produce();

        break;

    case 2:

        color=new blackFactory();

        color.produce();

        break;

    case 3:

        color=new whiteFactory();

       color.produce();

        break;

    default:

        System.out.println("透明");

    }

   

   

   

    switch(s) {

    case 1:

        sex=new girlFactory();

        sex.produce();

        break;

    case 2:

        sex=new boyFactory();

        sex.produce();

        break;

    default:

        System.out.print("无性别孩子");

   

    }

   

}

}

 

 

#include <iostream>

 

using namespace std;

 

class SexFactory{

public:

    virtual void produce(){

        cout<<"无性别孩子"<<endl;

    }

};

 

class girlFactory:public SexFactory{

public:

 

    void produce(){

    // TODO Auto-generated method stub

    cout<<"女孩"<<endl;

}

};

 

class boyFactory:public SexFactory{

public:

    void produce(){

    // TODO Auto-generated method stub

    cout<<"男孩"<<endl;

}

};

 

class ColorFactory{

public:

    virtual void produce(){

        cout<<"透明";

    };

};

 

class yellowFactory:public ColorFactory{

public:

    void produce(){

    // TODO Auto-generated method stub

    cout<<"黄种";

}

};

 

class whiteFactory:public ColorFactory{

public:

    void produce(){

    // TODO Auto-generated method stub

    cout<<"白种";

}

};

 

class blackFactory:public ColorFactory{

public:

    void produce(){

    // TODO Auto-generated method stub

    cout<<"黑种";

}

};

 

class Person{

public:

    Person(){

        SexFactory* sex;

    ColorFactory* color;

    int s,c;

    cout<<"请输入你要生产的小人的性别 1是女孩 2是男孩"<<endl;

    cin>>s;

    cout<<"请输入你要生产的小人的颜色 1是黄种 2是黑种 3是白种"<<endl;

    cin>>c;

    cout<<"您生产了一个";

 

        yellowFactory y;

        blackFactory b;

        whiteFactory w;

    switch(c) {

    case 1:

        color=&y;

        break;

    case 2:

        color=&b;

        break;

    case 3:

        color=&w;

        break;

    default:;

    }

    color->produce();

 

    girlFactory g;

    boyFactory bo;

    switch(s) {

    case 1:

        sex=&g;

        break;

    case 2:

        sex=&bo;

        break;

    default:;

    }

    sex->produce();

 

}

};

 

int main()

{

    Person person;

    return 0;

}

 

 

 

3.注意编程规范。

posted @ 2021-10-15 16:13  我试试这个昵称好使不  阅读(60)  评论(0编辑  收藏  举报