女娲造人
使用简单工厂模式模拟女娲(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 }