抽象工厂模式

#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;
}


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("无性别孩子");
   
    }
   
}
}
 
 

posted @ 2022-10-30 18:49  华茹  阅读(15)  评论(0)    收藏  举报