首页 > 其他分享 >每日总结19

每日总结19

时间:2023-10-30 17:55:15浏览次数:29  
标签:总结 Woman java package 19 每日 test public Man

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

 

实验4:抽象工厂模式

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

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

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

 

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

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

 

实验要求:

1. 画出对应的类图;

 

2. 提交源代码;

Black.java

package test;

 

/*

 * 具体工厂类 黑色肤色

 */

public class Black implements Color{

    @Override

    public Man produceMan() {

        return new BlackMan();

    }

    @Override

    public Woman produceWoman() {

        return new BlackWoman();

    }

}

 

BlackMan.java

package test;

 

public class BlackMan implements Man {

    @Override

    public void makeM() {

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

    }

 

}

 

 

BlackWoman.java

package test;

 

 

public class BlackWoman implements Woman {

    @Override

    public void makeW() {

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

    }

 

}

 

Client.java

package test;

/*

 * 客户端测试类

 */

public class Client {

    public static void main(String[] args) {

        try

        {

            Color color;

            Man man;

            Woman woman;

            color=(Color)XMLUtil.getBean();

            System.out.println(color);

            woman=color.produceWoman();

            woman.makeW();

            man=color.produceMan();

            man.makeM();

        }catch(Exception e){

            System.out.print(e.getMessage());

        }

 

    }

}

 

Color.java

package test;

 

/*

 * 抽象工厂类 (肤色)

 */

public interface Color {

 

    public Man produceMan();

    public Woman produceWoman();

 

}

 

Man.java

package test;

/*

 * 抽象产品类Man

 */

public interface Man {

 

    public void makeM();

 

}

 

White.java

package test;

 

/*

 * 具体工厂类 白色肤色

 */

public class White implements Color{

    @Override

    public Man produceMan() {

        return new WhiteMan();

    }

    @Override

    public Woman produceWoman() {

        return new WhiteWoman();

    }

}

 

WhiteMan.java

package test;

 

public class WhiteMan implements Man {

    public void makeM() {

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

    }

 

}

 

whiteWoman.java

package test;

 

 

public class WhiteWoman implements Woman {

    @Override

    public void makeW() {

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

    }

 

}

 

Woman.java

package test;

 

/*

 * 抽象产品类Woman

 */

public interface Woman {

 

    public void makeW();

}

 

XMLUtil.java

package test;

/*

 * 读取XML文件并根据存储在XML文件中的类名获取对应的对象

 */

 

import javax.xml.parsers.*;

import org.w3c.dom.*;

import java.io.File;

public class XMLUtil {

    @SuppressWarnings("deprecation")

    public static Object getBean() {

        try {

            //创建DOM文档对象

            DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();

            DocumentBuilder builder = dFactory.newDocumentBuilder();

            Document doc;

            doc = builder.parse(new File("config.xml"));

 

            //获取包含类名的文本节点

            NodeList nl = doc.getElementsByTagName("className");

            Node classNode = nl.item(0).getFirstChild();

            String cName = classNode.getNodeValue();

            System.out.println("类名:  "+ cName); //输出类名

 

            //通过类名生成实例对象返回

            Class<?> c = Class.forName("test."+cName);

            Object obj = c.newInstance();

            return obj;

        } catch (Exception e) {

            e.printStackTrace();

            return null;

        }

    }

}

 

Yellow.java

package test;

 

/*

 * 具体工厂类 黄色肤色

 */

public class Yellow implements Color{

    @Override

    public Man produceMan() {

        return new YellowMan();

    }

    @Override

    public Woman produceWoman() {

        return new YellowWoman();

    }

}

 

YellowMan.java

package test;

public class YellowMan implements Man {

    public void makeM() {

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

    }

 

}

 

YellowWoan.java

package test;

 

 

public class YellowWoman implements Woman {

    public void makeW() {

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

    }

 

}

Config.xml

<?xml version="1.0" encoding="UTF-8"?>

 <config>

    <className>Black</className>

</config>

 

 

 

3.注意编程规范。

标签:总结,Woman,java,package,19,每日,test,public,Man
From: https://www.cnblogs.com/mine-my/p/17798459.html

相关文章

  • 每日博客
    今天写了软件构造 尝试将生成的算式及习题长期保存下来,建议采用CSV形式存储。提交实现效果及相关代码。 ......
  • 自考总结
    昨天又进行了自考,一共考了两科,分别是信息系统开发与管理和中国近现代史。这两科都不是第一次考了,都已经考过一次,所以这次也算是有经验了。信息系统开发与管理讲的是整个开发系统的过程,从总体规划,系统分析,系统设计,系统实施,系统运行维护,系统评价。其实整个过程我们都一直在经历。这次......
  • Linux Shell 基础 -- 总结几种括号、引号的用法
    Shell脚本中经常需要用到一些括号、引号表达式,功能各不相同,本文详细介绍一下。1、双引号""双引号常用于包含一组字符串,在双引号中,除了"$"、"\"、"`(反引号)"有特殊含义外,其余字符(如IFS、换行符、回车符等)没有特殊含义。$a=3$echo"$a"输出结果为3,在双引号中$符......
  • 又是1024诶,这是20231024,总结事业编考试记得写名字
    最近也是感慨颇多。总之我想说或者建议:1、考试一般要写名字都会在明显的地方2、对于不常见考试,是否监考可以提醒考生在哪里写名字?(至少提醒哪些答题卡要写名字?)3、对于考后是否可以写名字,监考帮考生写名字也可以不。在老家参与了一次事业单位考试,考的公基和写作,然后最近一直在备考国......
  • Python常用模块-20个常用模块总结
    目录time模块datetime模块random模块os模块sys模块json和pickle模块hashlib和hmac模块logging模块numpy模块pandas模块matplotlib模块re模块typing模块collections模块pathlib模块shutil模块xml模块subprocess模块configparser模块Python常用模块小结time模块......
  • 面向对象(总结)
    面向对象最本质解决的是:提供可扩展性类与对象程序中必须先有类,再有对象#类中有属性,有方法classPerson:#类属性school='xxxx'#对象的绑定方法,初始化方法完成对象的初始化def__init__(self,name='hys',age=16):self.name=name......
  • 23/10/29 模拟赛总结
    时间安排7:35-8:20直接开T1,发现不会做。8:20-8:40把T2T3T4都看了,T2和T1一样是我必不可能会的人类智慧题,T3看上去就很劝退,T4是我喜欢的树上问题,直接倒序开题。8:40-10:20想了T4,得到了一个\(O(n^2)\)的暴力,高达40分,直接开写。写完之后过不了第二个样例,发现假......
  • 【每日三十六记 —— BGP知识点汇总大全】(第一弹)
    个人名片:......
  • LeetCode每日算法2—两数相加
    题目描述给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字0之外,这两个数都不会以0开头。示例输入:(2......
  • QPQ表面处理,公司经营销售部召开半年工作总结会
    成都工具研究所有限公司的前身是成都工具研究所,于1956年创建于北京,是原机械工业部的直属研究所,是我国机械工业的综合性工具科研机构。公司官网:http://www.ctri.com.cn/公司主要从事精密切削工具、精密测量仪器以及表面改性处理技术的技术研究、产品开发和应用服务。7月5日,公司运......