[实验任务一]:人与肤色
使用抽象工厂模式,完成下述产品等级结构:
package test4;public class BlackFactory implements MWFactory {public Man produceMan(){return new BlackSkinMan();}public Woman produceWomen(){return new BlackSkinWomen();} }
package test4;public class BlackSkinMan implements Man {public void play(){System.out.println("我是黑种男人!");} }
package test4;public class BlackSkinWomen implements Woman {public void play(){System.out.println("我是黑种女人!");} }
package test4;public class Client {public static void main(String args[]){try{MWFactory factory;Man m;Woman w;factory=(MWFactory)XMLUtil.getBean();m=factory.produceMan();m.play();w=factory.produceWomen();w.play();}catch(Exception e){System.out.println(e.getMessage());}} } //run此文件
package test4;public interface Man {public void play(); }
package test4;public interface MWFactory {public Man produceMan();public Woman produceWomen(); }
package test4;public class WhiteFactory implements MWFactory {public Man produceMan(){return new WhiteSkinMan();}public Woman produceWomen(){return new WhiteSkinWomen();} }
package test4;public class WhiteSkinMan implements Man{public void play(){System.out.println("我是白种男人!");} }
package test4;public class WhiteSkinWomen implements Woman{public void play(){System.out.println("我是白种女人!");} }
package test4;public interface Woman {public void play(); }
package test4;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("Cainiao.iml"));//获取包含类名的文本节点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;}} }
package test4;public class YellowFactory {public Man produceMan(){return new YellowSkinMan();}public Woman produceWomen(){return new YellowSkinWomen();}}
package test4;public class YellowSkinMan implements Man{public void play(){System.out.println("我是黄种男人!");} }
package test4;public class YellowSkinWomen implements Woman{public void play(){System.out.println("我是黄种女人!");} }