首页 > 其他分享 >软件设计模式————(抽象工厂模式)

软件设计模式————(抽象工厂模式)

时间:2024-11-21 14:12:24浏览次数:1  
标签:Woman show 软件设计 void 模式 class 抽象 Override public

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

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

 

实验要求:

1.画出对应的类图;

 

2.提交源代码;

public class BlackFactory implements PeopleFactory
{
    @Override
    public Man produceMan()
    {
        return new BlackMan();
    }
 
    @Override
    public Woman produceWoman()
    {
        return new BlackWoman();
    }
}
 
 
public class BlackMan implements Man
{
    @Override
    public void show()
    {
        System.out.println("一个黑种男人");
    }
}
 
 
public class BlackWoman implements Woman
{
    @Override
    public void show()
    {
        System.out.println("一个黑种女人");
    }
}
 
 
public class Client
{
    public static void main(String[] args)
    {
        try
        {
            PeopleFactory factory;
            Man man;
            Woman woman;
 
            //根据xml配置文件动态实例对象
            factory = (PeopleFactory) XMLUtil.getBean();
 
            man = factory.produceMan();
            man.show();
 
            woman = factory.produceWoman();
            woman.show();
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}
 
 
public interface Man
{
    void show();
}
 
 
public interface PeopleFactory
{
    Man produceMan();
 
    Woman produceWoman();
}
 
public class WhiteFactory implements PeopleFactory
{
    @Override
    public Man produceMan()
    {
        return new WhiteMan();
    }
 
    @Override
    public Woman produceWoman()
    {
        return new WhiteWoman();
    }
}
 
public class WhiteMan implements Man
{
    @Override
    public void show()
    {
        System.out.println("一个白种男人");
    }
}
 
public class WhiteWoman implements Woman
{
    @Override
    public void show()
    {
        System.out.println("一个白种女人");
    }
}
 
public interface Woman
{
    void show();
}
 
 
 
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
 
public class XMLUtil
{
    public static Object getBean()
    {
        try
        {
            //创建DOM文档对象
            DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = dFactory.newDocumentBuilder();
            Document doc = builder.parse(new File("src/main/resources/config4.xml"));
 
            //获取包含类名的文本节点
            NodeList nl = doc.getElementsByTagName("className");
            Node classNode = nl.item(0).getFirstChild();
            String cName = classNode.getNodeValue();
 
            //通过类名生成实例对象并将其返回
            Class c = Class.forName(cName);
            Object obj = c.newInstance();
            return obj;
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }
}
 
 
public class YellowFactory implements PeopleFactory
{
    @Override
    public Man produceMan()
    {
        return new YellowMan();
    }
 
    @Override
    public Woman produceWoman()
    {
        return new YellowWoman();
    }
}
 
 
public class YellowMan implements Man
{
    @Override
    public void show()
    {
        System.out.println("一个黄种男人");
    }
}
 
 
public class YellowWoman implements Woman
{
    @Override
    public void show()
    {
        System.out.println("一个黄种女人");
    }
}
 
 

  

3.注意编程规范。

标签:Woman,show,软件设计,void,模式,class,抽象,Override,public
From: https://www.cnblogs.com/youxiandechilun/p/18560607

相关文章

  • 软件设计模式————(建造者模式)
    [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。实验要求:1.画出对应的类图; 2.提交源代码;Java1.BuilderpublicabstractclassBuilder{......
  • 软件设计模式————(原型模式)
    [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。实验要求:1.画出对应的类图; 2.提交源代码(用C++完成);#include<iostream>usingnamespacestd;//向量类classVector{p......
  • 软件设计模式————(单例模式)
    [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。实验要求:1.画出对应的类图; 2.提交源代码; packagetest7;publicclassClient{publicstaticvoidmain(String[]args){StudentIDstu1,stu2;stu1=StudentID.getStudent......
  • 软件设计模式————(适配器模式)
    [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1.画出对应的类图; 2.提交源代码;packagetest8;publicclassAdapterimplementsCat,Dog{privateCatcat=newRealcat();privateDogdog=newRealdog();publicv......
  • 软件设计模式————(工厂方法模式)
    [实验任务一]:加密算法目前常用的加密算法有DES(DataEncryptionStandard)和IDEA(InternationalDataEncryptionAlgorithm)国际数据加密算法等,请用工厂方法实现加密算法系统。实验要求:1.画出对应的类图; 2.提交该系统的代码,该系统务必是一个可以能够直接使用的系统,查阅资料完......
  • Java中常用的线程安全单例模式实现
    在Java中,实现线程安全的单例模式有多种方式。以下是几种常用的线程安全单例模式实现:1.饿汉式(线程安全,类加载时初始化)特点:简单且线程安全,但如果实例过于占用资源且程序可能不使用它,会造成内存浪费。publicclassSingleton{privatestaticfinalSingletonINSTANCE......
  • HarmonyOS Next加解密算法中的参数与模式详解
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)中加解密算法参数与模式的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、加解密参数......
  • 麒鸣:提示词AI推理能力提升:从统辖到抽象演绎的突破之路-
    引言人工智能的推理能力是衡量其智能水平的重要指标。本文将深入探讨如何通过统辖、抽象、演绎和反应等关键环节来提升AI的推理能力,为开发者提供实用的思路和方法。理解AI推理的核心要素统辖能力统辖能力是AI系统对问题整体把握的基础。它包括:信息收集与整合上下文理解......
  • 软件开发中设计模式的恰当引入与实践
    一、什么是设计模式?1.1设计模式的定义设计模式是前人总结的、可复用的、在特定场景下解决特定问题的代码设计经验。它提供了一种通用的解决方案,用于描述软件系统中对象和类的结构及交互方式。1.2设计模式的分类根据**《设计模式:可复用面向对象软件的基础》**(GoF书籍)......
  • 模板方法模式-java实战
    经典实现模板方法模式(TemplateMethodPattern)是一种行为型设计模式,它在父类中定义了一个算法的框架,允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。实现步骤:定义抽象类:这个类定义了算法的框架,包括模板方法和一些抽象方法。实现模板方法:模板方法定义了算......