由XML解析学习工厂模式

代码段1:

startupData = new StartupData();

/* 设定自定义的MyHandler给XMLReader */

  StartupXMLHandler startupDataXMLHandler = new StartupXMLHandler();
  startupDataXMLHandler.setData(startupData);

/* 产生SAXParser对象 */
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
     /* 产生XMLReader对象 */
       XMLReader xmlReader = sp.getXMLReader();//SAXParserFactory.newInstance().newSAXParser().getXMLReader();

xmlReader.setContentHandler(startupDataXMLHandler);

xmlReader.parse(input);

发现:关键有三个类:

(1)StartupData

(2)  StartUPXMLHandler

(3)  XMLReader

其中(1)是存放解析XML结果的类,没啥啰嗦的。

(2)看下面这段代码:

SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个 文档,占用资源少;SAX解析器代码比DOM解析器代码小,适于Applet,下载。缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态 性;从事件中只能得到文本,但不知该文本属于哪个元素;使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少;

  public class StartUPXMLHandler extends DefaultHandler{

@Override

    public void startDocument() throws SAXException{

      System.out.println("开始解析!");

    }

@Override

    public void endDocument() throws SAXException{

      System.out.println("解析完成!");

    }

@Override

    public void startElement(String uri, String localName, String qName,Attributes atts) throws SAXException {

      System.out.println("元素名:"+qName);

    }

@Override

    public void endElement(String uri, String localName, String qName) throws SAXException{

      System.out.println("对"+qName+"的解析完成!");

    }

  }

由XML解析学习工厂模式,布布扣,bubuko.com

时间: 2024-10-07 21:34:33

由XML解析学习工厂模式的相关文章

Android] Android XML解析学习——方式比较

[Android] Android XML解析学习——方式比较 (ZT) 分类: 嵌入式 (From:http://blog.csdn.net/ichliebephone/article/details/5981913) 一.基础知识 经过这段时间的学习,我们已经了解了Android平台上用于解析XML的三种方式:SAX.DOM和Pull.并且在学习的过程中也介绍了这三种方式各自的特点及适合的使用场合,简单的来说,DOM方式最直观和容易理解,但是只适合XML文档较小的时候使用,而SAX方式更适合

设计模式解析之工厂模式 (一)

工厂模式在"创造模式"中是比较难理解的,困难之处并不在于工厂模式的定义本身,困惑的地方在于为什么要使用工厂模式,或者说是必须使用工厂的理由. 工厂模式的定义 Define an interface for creating an object, but let the classes that implement the interface decide which class to instantiate. The Factory method lets a class defer

设计模式学习 - 工厂模式

工厂模式: 定义了一个创建对象的接口,但由它的子类决定实例化哪一个对象.工厂方法将对象的实例化延迟到了子类. 模式组成: 一组使用者:父类定义一个创建对象的接口及其他通用接口,子类负责创建对象接口的具体实现(在案例中为 PizzaStore 及 NYPizzaStore) 一组产品类:(在案例中为 抽象Pizza类及其具体实现的子类) 注: 每一个使用者的子类负责创建一个(组)相似对象. UML 类图: 代码具体实现: 1. 对象的创建者: PizzaStore 类 // pizza Store

设计模式(三)学习----工厂模式

工厂模式:专门负责将大量有共同接口的类实例化,工厂模式可以动态的决定将哪一个类实例化,不必事先知道每次要实例化哪一个类.工厂模式有以下几种形态: 简单工厂模式(simple factory)又称静态工厂模式. 工厂方法模式(Factory Method)又称多态工厂模式模式. 抽象工厂模式(Abstract Method):又称工具箱. 1.简单工厂模式UML类图如图所示: 代码: Fruit 抽象产品: package com.lp.ecjtu.SimpleFactory; public in

IOS XML解析学习

XML文件: <?xml version="1.0" encoding="UTF-8"?> <Notes> <Note id="1"> <CDate>2013-6-11</CDate> <Content>ksdjfaljdfasf</Content> <UserID>ALEX</UserID> </Note> <Note

设计模式学习——工厂模式(Factory Pattern)

1.有一个工厂,专门生产不同品牌的汽车.当有人需要从此工厂提货的时候,只需要告诉他,要什么品牌的,就可以了,并不关心这些车是怎么生产出来的. 2.以上方式,如果增加品牌的时候,也要修改工厂,有点麻烦.于是,把工厂也抽象了. 1的类图与实现: 首先,是通用的车 1 /// 2 /// @file Car.h 3 /// @author marrs([email protected]) 4 /// @date 2017-08-12 20:10:31 5 /// 6 7 #ifndef __CAR_H

[php学习]工厂模式

<?php /** * */ class Automobile { private $vehicle_make; private $vehicle_model; public function __construct($make,$model) { # code... $this->vehicle_make = $make; $this->vehicle_model = $model; } public function get_make_and_model(){ return $thi

工厂模式(Factory Patter)

1.工厂模式简介 工厂模式属于创建型模式,是专门用来创建对象的模式,抽象了实例化的过程.工厂模式分为 : 工厂方法模式.抽象工厂模式. 在学习工厂方法模式.抽象工厂之前,首先先要了解一下简单工厂模式,简单工厂不在23种设计模式之列,一般它是根据自变量的不同而返回不同的类型.比较简单实用一些,在学习工厂模式之前下来学习一下简单工厂,有助于我们理解工厂模式. 1.1.简单工厂定义 简单工厂是由一个工厂对象决定创建出哪一种产品类的实例. 其实质就是由一个工厂类根据传入的参数,来决定调用哪一个产品类的实

什么是工厂模式

1.  传授设计模式中存在的问题 我个人最近对设计模式中的工厂模式进行了比较深入的学习,通过学习感悟出,现在很多设计模式传道者,在讲述设计模式的过程中存在一些问题,使得设计模式变得很难理解.设计模式本身很抽象,但是这些传道者在讲述的过程中,将一个抽象的东西讲的更抽象,从而使我们望而却步.有些人在讲述的时候,没有考虑读者的注意力.比如我在看<C#设计模式>的时候,在讲述抽象工厂模式的时候,直接就进入了一个示例,而且这个例子比较复杂,涉及了比较多的概念.术语,而且还有算法要处理.但是这些和要讲述的