软件设计4

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

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

 

 

 

实验要求:

1. 画出对应的类图;

 

 

2.提交源代码;

package designpattern;

/*

 *

 * 人类抽象类

 */

abstract class Human {

public abstract void color();

public abstract void talk();

 

 

}

abstract class BlackHuman extends Human{

@Override

public void color() {

System.out.println("我的皮肤是黑色");

 

}

abstract public void talk();

}

abstract class YellowHuman extends Human{

@Override

public void color() {

System.out.println("我的皮肤是黄色");

 

}

abstract public void talk();

}

abstract class WhiteHuman extends Human{

@Override

public void color() {

System.out.println("我的皮肤是白色");

 

}

abstract public void talk();

}

class FemaleBlackMan extends BlackHuman{

 

 

 

@Override

public void talk() {

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

 

}

 

}

class FemaleWhiteMan extends WhiteHuman{

 

 

@Override

public void talk() {

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

 

}

 

}

class FemaleYellowMan extends YellowHuman{

 

 

 

@Override

public void talk() {

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

 

}

 

}

class MaleBlackMan extends BlackHuman{

 

 

@Override

public void talk() {

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

 

}

 

}

class MaleWhiteMan extends WhiteHuman{

 

 

 

@Override

public void talk() {

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

 

}

 

}

class MaleYellowMan extends YellowHuman{

 

 

@Override

public void talk() {

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

 

}

 

}

interface HumanFactory{

public Human createBlackHuman();

public Human createWhiteHuman();

public Human createYellowHuman();

}

class FemaleHumanFactory implements HumanFactory{

 

@Override

public Human createBlackHuman() {

return new FemaleBlackMan();

}

 

@Override

public Human createWhiteHuman() {

return new FemaleWhiteMan();

}

 

@Override

public Human createYellowHuman() {

return new FemaleYellowMan();

}

 

}

class MaleHumanFactory implements HumanFactory{

 

@Override

public Human createBlackHuman() {

return new MaleBlackMan();

}

 

@Override

public Human createWhiteHuman() {

return new MaleWhiteMan();

}

 

@Override

public Human createYellowHuman() {

return new MaleYellowMan();

}

 

}

public class AbstractFactoryDemo {

public static void main(String[] args) {

//男性生产线

HumanFactory maleHumanFactory=new MaleHumanFactory();

//女性生产线

HumanFactory femaleHumanFactory=new FemaleHumanFactory();

 

Human maleBlack=maleHumanFactory.createBlackHuman();//创建黑人男性

Human femaleWhite=femaleHumanFactory.createWhiteHuman();//创建白人女性

 

maleBlack.color();

maleBlack.talk();

 

femaleWhite.color();

femaleWhite.talk();

 

}

}

 

 

3.注意编程规范。

posted @   那年晚风可期  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示