简单工厂模式01

女娲造人

使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。

 (1)类图

(2)源代码:

  1  2.1 People.java
  2 package AA;
  3 
  4 public class people {
  5     public static void main(String [] args)
  6     {
  7          try
  8          {
  9              NvWa nvwa;
 10              String brandName=XMLUtilTV.getBrandName();
 11              nvwa=PeopleFactory.producePeople(brandName);
 12              nvwa.play();
 13          }
 14          catch(Exception e)
 15          {
 16              System.out.println(e.getMessage());
 17          }
 18     }
 19 
 20 }
 21   2.2 NvWa.java
 22     package AA;
 23 
 24 public interface NvWa {
 25     public void play();
 26 }
 27 2.3 XMLUtilTV.java
 28 package AA;
 29 import javax.xml.parsers.*;
 30 import org.w3c.dom.*;
 31 import org.xml.sax.SAXException;
 32 import java.io.*;
 33 public class XMLUtilTV {
 34       //该方法用于从XML配置文件中提取品牌名称,并返回该品牌名称
 35         public static String getBrandName()
 36         {
 37             try
 38             {
 39                 //创建文档对象
 40                 DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
 41                 DocumentBuilder builder = dFactory.newDocumentBuilder();
 42                 Document doc;                            
 43                 doc = builder.parse(new File("congfilePeople.xml")); 
 44             
 45                 //获取包含品牌名称的文本节点
 46                 NodeList nl = doc.getElementsByTagName("brandName");
 47                 Node classNode=nl.item(0).getFirstChild();
 48                 String brandName=classNode.getNodeValue().trim();
 49                 return brandName;
 50                }   
 51                    catch(Exception e)
 52                    {
 53                        e.printStackTrace();
 54                        return null;
 55                    }
 56             }
 57 }
 58 2.4R.java
 59 
 60     package AA;
 61 
 62 public class R implements NvWa {
 63     public void play()
 64     {
 65         System.out.println("机器人创造中......");
 66     }    
 67 
 68 }
 69 
 70 2.5W.java
 71     package AA;
 72 
 73 public class W implements NvWa{
 74     public void play()
 75     {
 76         System.out.println("女人创造中......");
 77     }    
 78 }
 79 
 80 2.6M.java
 81    package AA;
 82 
 83 public  class M implements NvWa
 84 {
 85     public void play()
 86     {
 87         System.out.println("男人创造中......");
 88     }    
 89 }
 90 
 91 2.7PeopleFactory.java
 92 package AA;
 93 
 94 public class PeopleFactory {
 95     public static NvWa producePeople(String brand) throws Exception
 96     {
 97         if(brand.equalsIgnoreCase("M"))
 98         {
 99             System.out.println("女娲再创造男人!");
100             return new M();
101         }
102         else if(brand.equalsIgnoreCase("W"))
103         {
104             System.out.println("女娲再创造女人!");
105             return new W();
106         }
107         else if(brand.equalsIgnoreCase("R"))
108         {
109             System.out.println("女娲再创造机器人!");
110             return new R();
111         }
112         else
113         {
114             throw new Exception("对不起,我还是一块泥巴!");
115         }
116     }
117 
118 }

  

原文地址:https://www.cnblogs.com/gdp176119/p/5956488.html