點關注,不迷路;持續更新Java架構相關技術及資訊熱文!!!算法
統一建模語言(Unified Modeling Language,UML)又稱標準建模語言;經常使用圖包括:用例圖,靜態圖(包括類圖、對象圖和包圖),行爲圖,交互圖(順序圖, 協做圖),實現圖。sql
Singleton 模式主要做用是保證在Java 應用程序中,一個類Class 只有一個實例存在。舉例:定義一個類,它的構造函數爲private 的,它有一個static的private 的該類變量,在類初始化時實例話,經過一個public 的getInstance方法獲取對它的引用,繼而調用其中的方法。數據庫
第一種餓漢式:編程
//餓漢式
public class Singleton {
//私有化構造函數
private Singleton() {
}
//建立一個對象
private static Singleton instance = new Singleton();
//提供公有方法返回該對象
public static Singleton getInstance() {
return instance;
}
}
複製代碼
第二種懶漢式:設計模式
//懶漢式
public class Singleton {
//私有化構造函數
private Singleton(){
}
//建立一個空對象
private static Singleton instance = null;
//建立公有方法調用,對象若是爲空建立對象,不然直接返回當前對象
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
複製代碼
Java 中的23 種設計模式能夠分爲三類:bash
建立型模式(5種):網絡
Factory( 工廠模式),Builder( 建造者模式), Factory Method(工廠方法模式),Prototype(原型模式),Singleton(單例模式)。數據結構
結構型模式(7種):架構
Facade(外觀模式),Adapter(適配器模式), Bridge(橋接模式), Composite(組合模式),Decorator(裝飾器模式), Flyweight(享元模式), Proxy(代理模式)。併發
行爲型模式(11種):
Command(命令模式), Interpreter(解釋器模式), Visitor(訪問者模式),Iterator(迭代子模式), Mediator(中介者模式), Memento(備忘錄模式),Observer(觀察者模式),State(狀態模式),Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)。
工廠模式:
工廠模式是一種常常被使用到的模式,根據工廠模式實現的類能夠根據提供的數據生成一組類中某一個類的實例,一般這一組類有一個公共的抽象父類而且實現了相同的方法,可是這些方法針對不一樣的數據進行了不一樣的操做。首先須要定義一個基類,該類的子類經過不一樣的方法實現了基類中的方法。而後須要定義一個工廠類,工廠類能夠根據條件生成不一樣的子類實例。當獲得子類的實例後,開發人員能夠調用基類中的方法而沒必要考慮到底返回的是哪個子類的實例。
23種模式簡單說明:
所謂設計模式,就是一套被反覆使用的代碼設計經驗的總結(情境中一個問題通過證明的一個解決方案)。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設計模式令人們能夠更加簡單方便的複用成功的設計和體系結構。每一個模式都描述了一個在咱們的環境中不斷出現的問題,而後描述了該問題的解決方案的核心。經過這種方式,你能夠無數次地使用那些已有的解決方案,無需在重複相同的工做。
軟件開發中,各個開發階段不是順序執行的,各個階段都是並行執行也就是迭代的意思。這樣能更好的適應,開發中的需求變化,及人員的變更
用到了數據存貯,信息配置兩方面。
在作數據交換平臺時,將不能數據源的數據組裝成XML 文件,而後將XML 文件壓縮打包加密後經過網絡傳送給接收者,接收解密與解壓縮後再同XML 文件中還原相關信息進行處理。
在作軟件配置時,利用XML 能夠很方便的進行,軟件的各類配置參數都存貯在XML 文件中。
代碼以下,用編碼方式加以解決
public class DOMTest {
// 文件路徑
private String outFile = "F:\people.xml";
public static void main(String args[]) {
new DOMTest();
}
public DOMTest() {
try {
// 一、獲取DOM解析器工廠,以便產生解析器;二、獲取DOM解析器,以便解析DOM
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.newDocument();
// 3.建立元素
Element root = doc.createElement("老師");
Element wang = doc.createElement("許");
// 4.向指定元素節點中增長子元素節點或增長元素到子節點
wang.appendChild(doc.createTextNode("我是許老師"));
root.appendChild(wang);
doc.appendChild(root);
// 5.設置而後把DOM寫回XML文件
Transformer transformer = TransformerFactory.newInstance().newTransformer();
// 6.指定Transformer應該使用的首選字符編碼,將字符序列做爲字節序列進行編碼
transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
// 7.指定Transformer是否能夠添加額外的空白,同時輸出
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(new DOMSource(doc),
new StreamResult(outFile));
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
複製代碼
文件效果:
最後,歡迎作Java的工程師朋友們加入Java高級架構進階Qqun:963944895
羣內有技術大咖指點難題,還提供免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)
比你優秀的對手在學習,你的仇人在磨刀,你的閨蜜在減肥,隔壁老王在練腰, 咱們必須不斷學習,不然咱們將被學習者超越!
趁年輕,使勁拼,給將來的本身一個交代!