大三打卡(11.11)

实验4:抽象工厂模式

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

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

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

 
   

 


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

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

 

实验要求:

1.  画出对应的类图;

 

2.  提交源代码;

package RJSJ.test4.man;

 

public class BlackMan implements Man{

    @Override

    public void makeMan() {

        System.out.println("我是黑种男人!");

    }

}

package RJSJ.test4.man;

 

public interface Man {

    public void makeMan();

}

package ruanjiansheji.shiyan4.man;

 

public class WhiteMan implements Man{

    @Override

    public void makeMan() {

        System.out.println("我是白种男人!");

    }

}

package ruanjiansheji.shiyan4.man;

 

public class YellowMan implements Man{

    @Override

    public void makeMan() {

        System.out.println("我是黄种男人!");

    }

}

package RJSJ.test4.utils;

 

import RJSJ.test4.woman.Woman;

import RJSJ.test4.man.Man;

 

public interface AbstractFactory {

    public Man produceMan();

    public Woman produceWoman();

}

package RJSJ.test4.utils;

 

import RJSJ.test4.woman.BlackWoman;

import RJSJ.test4.man.BlackMan;

import RJSJ.test4.man.Man;

import RJSJ.test4.woman.Woman;

 

public class BlackFactory implements AbstractFactory{

    @Override

    public Man produceMan() {

        return new BlackMan();

    }

    @Override

    public Woman produceWoman() {

        return new BlackWoman();

    }

}

package RJSJ.test4.utils;

 

import RJSJ.test4.woman.WhiteWoman;

import RJSJ.test4.man.Man;

import RJSJ.test4.man.WhiteMan;

import RJSJ.test4.woman.Woman;

 

public class WhiteFactory implements AbstractFactory{

    @Override

    public Man produceMan() {

        return new WhiteMan();

    }

    @Override

    public Woman produceWoman() {

        return new WhiteWoman();

    }

}

package RJSJ.test4.utils;

 

import RJSJ.test4.man.YellowMan;

import RJSJ.test4.woman.YellowWoman;

import RJSJ.test4.man.Man;

import RJSJ.test4.woman.Woman;

 

public class YellowFactory implements AbstractFactory{

    @Override

    public Man produceMan() {

        return new YellowMan();

    }

    @Override

    public Woman produceWoman() {

        return new YellowWoman();

    }

}

package RJSJ.test4.woman;

 

public class BlackWoman implements Woman{

    @Override

    public void makeWoman() {

        System.out.println("我是黑种女人!");

    }

}

package RJSJ.test4.woman;

 

public class WhiteWoman implements Woman{

    @Override

    public void makeWoman() {

        System.out.println("我是白种女人!");

    }

}

package RJSJ.test4.woman;

 

public interface Woman {

    public void makeWoman();

}

 

package RJSJ.test4.woman;

 

public class YellowWoman implements Woman{

    @Override

    public void makeWoman() {

        System.out.println("我是黄种女人!");

    }

}

package RJSJ.test4;

 

import RJSJ.test4.man.Man;

import RJSJ.test4.utils.AbstractFactory;

import RJSJ.test4.utils.YellowFactory;

import RJSJ.test4.woman.Woman;

 

public class Client {

    public static void main(String[] args) {

        AbstractFactory factory=new YellowFactory();

        Man man = factory.produceMan();

        Woman woman = factory.produceWoman();

        man.makeMan();

        woman.makeWoman();

    }

}

3.注意编程规范。

posted @   夏季彼岸德  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示