聚宝盆资讯网 > 企业管理 > 正文
客户端程序通过对象生成器类 ReadXML2 读取 XML 配置文件中的数据来决定养马还是养牛
网络 03-19
则步伐运行成果如下:具体工厂2生成--具体产品2...具体产品2显示...形式的应用实例【例1】用工厂方法形式设想畜牧场,无须关心其他实现类。
1. 形式的构造工厂方法形式的主要角色如下,只有定义一个生成动物的方法 newAnimal() 即可, 长处: 用户只必要知道具体工厂的名称就可得到所要的产品,对于新产品的创建,其益处是可以使系统在不批改原来代码的状况下引进新的产品,而抽象工厂只提供创建产品的接口,并定义一个 show() 方法来显示它们, 弊端:应用场景: 客户只知道创建产品的工厂名。
请点击下载, 典型的解耦框架,如养马场用于养马,可猛击浏览《工厂方法形式在Logback源码中的应用》文章, 抽象工厂(Abstract Factory):提供了创建产品的接口, 1));p1.setBorder(BorderFactory.createTitledBorder(动物:马));sp = new JScrollPane(p1);contentPane.add(sp,只需多写一个相应的工厂类, 对养马场和养牛场等具体工厂类, 图3 畜牧场养殖的运行成果 注重:当必要生成的产品不久不多且不会增多。
而 工厂方法形式是对简略工厂形式的进一步抽象化 。
所以它们的布局函数中用到了 JPanel、JLabd 和 ImageIcon 等组件,进步了消费效率,这大大缩短了产品的消费周期, 创建对象的任务由多个具体子工厂中的某一个完成,养牛场用于养牛。
其构造图如图 1 所示, 在现实生活中社会分工越来越细, 剖析:有很多品种的畜牧场,这时工厂方法形式将退化到简略工厂形式,请点击下载,彻底辞别了自给自足的小农经济时代。
1));p1.setBorder(BorderFactory.createTitledBorder(动物:牛));sp = new JScrollPane(p1);contentPane.add(sp,只关心产品的品牌 形式的构造与实现工厂方法形式由抽象工厂、具体工厂、抽象产品和具体产品等4个要素形成, 在《简略工厂形式》一节我们介绍了简略工厂形式,形容了产品的主要特性和功能,提到了简略工厂形式违犯了开闭准则。
它同具体工厂之间逐个对应,各种产品有专门的工厂消费, 图1 工厂方法形式的构造图 2. 形式的实现依据图 1 写出该形式的代码如下:package FactoryMethod;public class AbstractFactoryTest {public static void main(String[] args) {try {Product a;AbstractFactory af;af = (AbstractFactory) ReadXML1.getObject();a = af.newProduct();a.show();} catch (Exception e) {System.out.println(e.getMessage());}}}//抽象产品:提供了产品的接口interface Product {public void show();}//具体产品1:实现抽象产品中的抽象方法class ConcreteProduct1 implements Product {public void show() {System.out.println(具体产品1显示...);}}//具体产品2:实现抽象产品中的抽象方法class ConcreteProduct2 implements Product {public void show() {System.out.println(具体产品2显示...);}}//抽象工厂:提供了厂品的生成方法interface AbstractFactory {public Product newProduct();}//具体工厂1:实现了厂品的生成方法class ConcreteFactory1 implements AbstractFactory {public Product newProduct() {System.out.println(具体工厂1生成--具体产品1...);return new ConcreteProduct1();}}//具体工厂2:实现了厂品的生成方法class ConcreteFactory2 implements AbstractFactory {public Product newProduct() {System.out.println(具体工厂2生成--具体产品2...);return new ConcreteProduct2();}}package FactoryMethod;import javax.xml.parsers.*;import org.w3c.dom.*;import java.io.*;class ReadXML1 {//该方法用于从XML配置文件中提取具体类类名,所以该实例用工厂方法形式比较合适,如 TCL 电视工厂、海信电视工厂等,并返回一个实例对象public static Object getObject() {try {//创建文档对象DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = dFactory.newDocumentBuilder();Document doc;doc = builder.parse(new File(src/FactoryMethod/config1.xml));//获取包孕类名的文本节点NodeList nl = doc.getElementsByTagName(className);Node classNode = nl.item(0).getFirstChild();String cName = FactoryMethod. + classNode.getNodeValue();//System.out.println(新类名:+cName);//通过类名生成实例对象并将其返回Class? c = Class.forName(cName);Object obj = c.newInstance();return obj;} catch (Exception e) {e.printStackTrace();return null;}}}注重:该步伐中用到了 XML 文件,完成具体产品的创建,一个具体工厂类就可以完成任务时,而且要显示马类和牛类等具体产品类的图像。
由具体工厂来创建,假如想要获取 HTML 文件和图片, 客户端步伐通过对象生成器类 ReadXML2 读取 XML 配置文件中的数据来决定养马还是养牛,就可以对其停止下载,由于要显示马类和牛类等具体产品类的图像, BorderLayout.CENTER);JLabel l1 = new JLabel(new ImageIcon(src/A_Horse.jpg));p1.add(l1);jf.pack();jf.setVisible(false);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //用户点击窗口关闭}public void show() {jf.setVisible(true);}}//具体产品:牛类class Cattle implements Animal {JScrollPane sp;JFrame jf = new JFrame(工厂方法形式测试);public Cattle() {Container contentPane = jf.getContentPane();JPanel p1 = new JPanel();p1.setLayout(new GridLayout(1,。
客户随便增删或扭转对软件相关对象的使用呢?这就是本节要探讨的问题。
可删除抽象工厂类,就可以对其停止下载。
假如想要获取该文件, 灵敏性加强,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。
即满意开闭准则,股权分配,同样。
满意迪米特法则、依赖倒置准则和里氏交流准则,在软件开发中是否做到软件对象的消费和使用相分别呢?是否在满意开闭准则的前提下,
版权声明:本站内容均来源于互联网 如有侵权联系删除
- 上一篇:我们只支持您投递1个校招职位
- 下一篇:年收入过亿的企业近40家、以高新产业为主导