首页 > 其他分享 >Tutorial 4_抽象工厂工厂模式

Tutorial 4_抽象工厂工厂模式

时间:2022-10-17 11:24:53浏览次数:46  
标签:chouxiang Woman java package 工厂 抽象 public Tutorial Man

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

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

 

2.1  Man.java
package chouxiang;
/*
 * 抽象产品类Man
 */
public interface Man {

    public void makeM();
    
}
2.2  WhiteMan.java
package chouxiang;

public class WhiteMan implements Man {
    public void makeM() {
        System.out.println("我是白种男人!");
    }
    
}
2.3  YelloeMan.java
package chouxiang;

public class YellowMan implements Man {
    public void makeM() {
        System.out.println("我是黄种男人!");
    }
    
}
2.4  BlackMan.java
package chouxiang;

public class BlackMan implements Man {
    @Override
    public void makeM() {
        System.out.println("我是黑种男人!");
    }
    
}
2.5  Woman.java
package chouxiang;
/*
 * 抽象产品类Woman
 */
public interface Woman {

    public void makeW();
}
2.6  WhiteWoman.java
package chouxiang;

public class WhiteWoman implements Woman {
    @Override
    public void makeW() {
        System.out.println("我是白种女人!");
    }
    
}
2.7  YellowWoman.java
package chouxiang;

public class YellowWoman implements Woman {
    public void makeW() {
        System.out.println("我是黄种女人!");
    }
    
}
2.8  BlackWoman.java
package chouxiang;

public class BlackWoman implements Woman {
    @Override
    public void makeW() {
        System.out.println("我是黑种女人!");
    }
    
}
2.9  Color.java
package chouxiang;
/*
 * 抽象工厂类 (肤色)
 */
public interface Color {
    
 public Man produceMan();
 public Woman produceWoman();
    
}
2.10  White.java
package chouxiang;
/*
 * 具体工厂类 白色肤色
 */
public class White implements Color{
    @Override
    public Man produceMan() {
        return new WhiteMan();
    }
    @Override
    public Woman produceWoman() {
        return new WhiteWoman();
    }
}
2.11  Yellow.java
package chouxiang;
/*
 * 具体工厂类 黄色肤色
 */
public class Yellow implements Color{
    @Override
    public Man produceMan() {
        return new YellowMan();
    }
    @Override
    public Woman produceWoman() {
        return new YellowWoman();
    }
}
2.12  Black.java
package chouxiang;
/*
 * 具体工厂类 黑色肤色
 */
public class Black implements Color{
    @Override
    public Man produceMan() {
        return new BlackMan();
    }
    @Override
    public Woman produceWoman() {
        return new BlackWoman();
    }
}
2.13  XMLUtil.java
package chouxiang;

/*
 * 读取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("src/main/java/chouxiang/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("chouxiang."+cName);
                 Object obj = c.newInstance();
                 return obj;
         } catch (Exception e) {
             e.printStackTrace();
             return null;
         }
         
     }
     
 }
2.14  Client.java
package chouxiang;
/*
 * 客户端测试类
 */
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());
       }
       
   }
}
2.15  config.xml
<?xml version="1.0" encoding="UTF-8"?>
 <config>
    <className>Black</className>
</config>

 

 

标签:chouxiang,Woman,java,package,工厂,抽象,public,Tutorial,Man
From: https://www.cnblogs.com/manmmm/p/16798527.html

相关文章

  • Tutorial 5_建造者模式
    [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机......
  • Tutorial 1_UML与面向对象程序设计基本原则
    [实验任务一]:UML复习阅读教材第一章复习UML,回答下述问题:面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明。1. 继承关系     继承指的是一个类(称为子......
  • 工厂模式
    1、c++工厂模式,点击进入(简单工厂模式、工厂方法模式、抽象工厂模式)2、实现可动态注册的简单工厂模式,点击进入3、c语言实现简单工厂模式,点击进入()4、工厂模式,点击进入(......
  • java中的抽象类
    java中的抽象类//在类名前加上abstract,那么这个类就变成了抽象类。//java的类是单继承的,但是他的接口可以多继承。//在方法前加上abstract,那么这个方法就变成了抽象方法......
  • 抽象类和接口的区别
    ①定义的关键字不同:抽象类使用abstract定义;接口使用interface定义。②继承或实现的关键字不同:抽象类使用extends继承;接口使用implements实现。③子类扩展的数量不同:抽象......
  • 02.00.简单工厂模式
    简单工厂模式SimpleFactoryPatternSimpleFactory模式实际上不是GoF23个设计模式中的一员在工厂类中创建具体对象namespace简单工厂模式{//抽象产品......
  • 数据库第八次作业-复习作业(工厂项目)【带源码】
    目录​​什么是数据库?​​​​用户可以对数据库执行什么操作?​​​​什么是数据库管理系统?​​​​你个数据库管理系统可以管理多少个数据库?​​​​那一个数据库有多少张表......
  • 精细化工厂房消防应急照明与疏散指示系统的设计与应用
    陈盼安科瑞电气股份有限公司上海嘉定0引言精细化工厂房大多是甲、乙、丙类火灾危险场所,火灾危险性大、甚至引发爆炸事故,对人员的疏散要求高。在发生火灾事故时,消防应急照......
  • 图解Java设计模式之工厂模式
    图解Java设计模式之工厂模式​​简单工厂模式​​​​简单工厂模式​​​​工厂方法模式​​​​抽象工厂模式​​简单工厂模式看一个具体的需求看一个披萨的项目:要便于披......
  • 工厂vr全景拍摄为全渠道的运营推广提供了强大的动力-深圳华锐视点
    VR技术将于5G、人工智能等融合,促进景区文化的传播与创新。VR全景这种逼真的效果让很多人体验身处现场一样,这是一种商家的视频营销手段。每个人都是视觉动物,对于第一眼......