Java設計模式模式 (包括工廠模式xml解析)
設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使程式碼編制真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。專案中合理的運用設計模式可以完美的解決很多問題,每種模式在現在中都有相應的原理來與之對應,每一個模式描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是它能被廣泛應用的原因。簡單說:
模式:在某些場景下,針對某類問題的某種通用的解決方案。
1.單例設計模式
懶漢式
餓漢式
double checking
詳見博文https://blog.csdn.net/wangdongli_1993/article/details/80972188
2.代理模式
現實生活中的代理(比如租房子張中介代理,那麼你是真實角色,是你要租房子,而中介公式是代理角色,你們有共同的約定),代理模式要求真實角色和代理角色實現同一個介面。
第二種執行緒建立方式 執行緒類實現Runnable介面,執行緒類就是真實角色。Thread是代理角色,也實現了Runnable介面,這就是代理模式,由Thread類中的start(),代理你完成執行緒的啟動呼叫
3.工廠模式
在手寫伺服器時,學到的解析xml語言就用到工廠模式,解析xml語言,學習了基於流的SAX解析方式 對於xml檔案內容,一條一條的分析。
這是一個簡單的xml檔案,寫入了兩個Person物件,要解析,要有對應的Person類
<?xml version="1.0" encoding="utf-8" ?>
<persons>
<person>
<name>"嫦娥"</name>
<age>9000</age>
</person>
<person>
<name>"豬八戒"</name>
<age>10100</age>
</person>
</persons>
所以,定義Person類,一個簡單的JAVABEAN類
package xml;
public class Person {
private String name;
private int age;
public Person(){
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
寫xml解析類
package xml;
import java.util.ArrayList;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
* 繼承DefaultHandler類,重寫五個方法
* startDocument()
* startElement(String uri, String localName, String qName,
Attributes attributes)
qName 就是xml檔案中的成對的標籤名稱
characters(引數) 對成對標籤的中的值進行獲取,
* endElement(引數) endDocument()
* @author Administrator
*
*/
private List<Person> persons;
private Person person;
private String tag;
@Override
public void startDocument() throws SAXException {
//System.out.println("處理文件開始");
persons=new ArrayList<Person>();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.println("處理元素開始"+qName);
if(qName!=null){
tag=qName;
}
if(qName!=null&&qName.equals("person")){
person=new Person();
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String str=new String(ch,start,length);
if(tag!=null&&tag.equals("name")){
person.setName(str);
}
else if(tag!=null&&tag.equals("age")){
person.setAge(Integer.valueOf(str));
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println("處理一個元素結束"+qName);
if(qName!=null&&qName.equals("person"))
{
persons.add(person);
}
tag=null;
}
@Override
public void endDocument() throws SAXException {
//System.out.println("處理文件結束");
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
}
最後是應用,處理xml檔案
package xml;
import java.io.IOException;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
//工廠模式
public class ParseDemo01 {public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
// 獲取解析工廠 SAXParserFactory 抽象類 .newInstance()建立物件
SAXParserFactory factory=SAXParserFactory.newInstance();//從解析工廠獲取解析器
SAXParser parse=factory.newSAXParser();//載入文件 註冊處理器 獲取xml檔案
Thread.currentThread().getContextClassLoader().
getResourceAsStream("xml/Person.xml")
//編寫處理器 就是上面寫好的解析類
PersonHandler ph=new PersonHandler();parse.parse(Thread.currentThread().getContextClassLoader().
getResourceAsStream("xml/Person.xml"), ph);
List<Person> persons=ph.getPersons();
for(Person p:persons){
System.out.println(p.getName()+"--->"+p.getAge());
}
}
}
相關文章
- Java 設計模式(工廠模式)Java設計模式
- java設計模式 – 工廠模式Java設計模式
- Java設計模式(工廠模式)Java設計模式
- Java設計模式-工廠模式Java設計模式
- Java設計模式--工廠模式Java設計模式
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- java設計模式–抽象工廠模式Java設計模式抽象
- Java設計模式-抽象工廠模式Java設計模式抽象
- Java設計模式之工廠模式Java設計模式
- java設計模式-工廠方法模式Java設計模式
- Java 設計模式之工廠方法模式與抽象工廠模式Java設計模式抽象
- Java設計模式之工廠方法模式Java設計模式
- Java設計模式(二):工廠方法模式Java設計模式
- Java設計模式之(二)——工廠模式Java設計模式
- java設計模式-簡單工廠模式Java設計模式
- 設計模式-工廠模式二(工廠方法模式)設計模式
- 設計模式 —— 工廠模式設計模式
- 設計模式(工廠模式)設計模式
- 設計模式----工廠模式設計模式
- 【設計模式】工廠模式設計模式
- 設計模式-工廠模式設計模式
- JAVA設計模式 3【建立型】理解工廠模式與抽象工廠模式Java設計模式抽象
- Java設計模式學習筆記——工廠模式與抽象工廠模式Java設計模式筆記抽象
- 設計模式----工廠設計模式設計模式
- 設計模式-工廠設計模式設計模式
- 淺識JAVA設計模式——工廠模式(一)Java設計模式
- Java常用設計模式之工廠方法模式Java設計模式
- Java常用設計模式之抽象工廠模式Java設計模式抽象
- 3.java設計模式之工廠模式Java設計模式
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 設計模式 - 工廠方法模式設計模式
- 設計模式 —— 抽象工廠模式設計模式抽象
- 設計模式-抽象工廠模式設計模式抽象
- PHP設計模式-- 工廠模式PHP設計模式
- 【設計模式】工廠方法模式設計模式
- 設計模式 #2 (工廠模式)設計模式
- 設計模式~~~工廠方法模式設計模式