抽象工厂模式人与肤色

今天做了抽象工厂模式--人与肤色的实验,最终成功运行成功人与肤色的代码;

下面是操作流程和步骤:

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

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

 

实验要求:

1. 画出对应的类图;

 

2.提交源代码;

 

Java:

public class BlackFactory implements MWFactory

{

 public Man produceMan()

 {

  return new BlackSkinMan();

 }

 

 public Women produceWomen()

 {

  return new BlackSkinWomen();

 }

}

public class BlackSkinMan implements Man

{

 public void play()

 {

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

 }

}

public class BlackSkinWomen implements Women

{

 public void play()

 {

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

 }

}

public class Client

{

 public static void main(String args[])

 {

         try

         {

          MWFactory factory;

          Man m;

          Women w;

          factory=(MWFactory)XMLUtil.getBean();

          m=factory.produceMan();

          m.play();

          w=factory.produceWomen();

          w.play();

         }

         catch(Exception e)

         {

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

         }

 }

}

public interface Man

{

 public void play();

}

public interface MWFactory

{

 public Man produceMan();

 public Women produceWomen();

}

public class WhiteFactory implements MWFactory

{

 public Man produceMan()

 {

  return new WhiteSkinMan();

 }

 

 public Women produceWomen()

 {

  return new WhiteSkinWomen();

 }

}

public class WhiteSkinMan implements Man

{

 public void play()

 {

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

 }

}

public class WhiteSkinWomen implements Women{

  public void play()

  {

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

  } 

}

public interface Women

{

 public void play();

}

import javax.xml.parsers.*;

import org.w3c.dom.*;

import org.xml.sax.SAXException;

import java.io.*;

public class XMLUtil

{

//该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象

 public static Object getBean()

 {

  try

  {

   //创建文档对象

   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();

            

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

            Class c=Class.forName(cName);

        Object obj=c.newInstance();

            return obj;

           }   

            catch(Exception e)

            {

             e.printStackTrace();

             return null;

            }

  }

}

public class YellowFactory implements MWFactory

{

 public Man produceMan()

 {

  return new YellowSkinMan();

 }

 public Women produceWomen()

 {

  return new YellowSkinWomen();

 }

}

public class YellowSkinMan implements Man

{

 public void play()

 {

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

 }

}

public class YellowSkinWomen implements Women{

 public void play()

 {

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

 }

 运行截图:

原文地址:https://www.cnblogs.com/092e/p/15530633.html