十月二十九日
[实验任务一]:人与肤色
使用抽象工厂模式,完成下述产品等级结构:
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("我是黄种女人!"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2023-10-30 10.30日