在這里整理一下我在寫實驗以及上課過程當(dāng)中學(xué)到的雜七雜八沒有系統(tǒng)總結(jié)的知識
抽象類:
抽象類在我看來比較像生物里面界門綱目科屬種里面的較大的類吱晒,也就是說抽象類里面可以延展出眾多的具體的類,官方定義是聲明方法的存在而不去實現(xiàn)它的類被叫做抽象類,舉個栗子
所有的點都要加屬性,但是具體的屬性每一種點加的都不一樣奢驯,所以我們將加屬性的函數(shù)抽象化
abstract void fillVertexInfo (String[] args);
將整個類也抽象化黍檩,在實現(xiàn)每一種具體的邊時叉袍,從這個抽象類里面extends出來,完成之前沒有完成的抽象方法刽酱,在抽象類里面實現(xiàn)了的方法也可以重寫覆蓋畦韭。
工廠模式
工廠模式我看到了一個將它比喻成女媧娘娘的八卦爐的例子,八卦爐里面造不同的人種肛跌,怎樣快速的選擇自己要造的人種,就將八卦爐做成一個工廠察郁,當(dāng)要使用的時候衍慎,就可以快速構(gòu)造不同的人種對象。那么用我們實驗中的例子皮钠,也就是節(jié)點和邊的工廠模式
這便是演員節(jié)點的工廠模式稳捆,他與其他的節(jié)點一樣,擁有同樣的調(diào)用函數(shù)接口麦轰,但是每一個具體的實現(xiàn)都不一樣乔夯,在調(diào)用的時候,如下圖
Actor a = new ActorVertexFactory().createVertex(label,"Actor", args);
其他節(jié)點的生成也像這樣款侵,這種設(shè)計模式的好處在于末荐,用戶不需要知道底層是怎樣具體構(gòu)造這個節(jié)點的,他們只需要只要要傳遞哪些信息即可新锈。它具有良好的封裝性甲脏,代碼結(jié)構(gòu)清晰,也有利于擴(kuò)展妹笆。它是典型的解耦框架块请。高層模塊只需要知道產(chǎn)品的抽象類,其他的實現(xiàn)類都不用關(guān)心拳缠。
策略模式:
策略模式我看到的一個很好的例子是將它比喻成了孔明的錦囊妙計墩新,在一個錦囊里面裝著三個妙計,用戶可以自如的調(diào)用不同的妙計窟坐。
下面我一邊舉例一邊說:
這種方法先實現(xiàn)一個接口或者抽象類
然后完成接口或者從抽象類extends出來一個或者幾個具體的策略
然后創(chuàng)建一個容器海渊,將這些策略加到容器中
然后讓用戶選擇策略,用下面這種方式調(diào)用
然后調(diào)用r的方法即為調(diào)用你想的那種方法
從properties文件里面獲取參數(shù)信息
先寫了一個param.properties文件狸涌,里面存儲了所需要設(shè)置的參數(shù)
然后寫了一個函數(shù)從文件中讀入?yún)?shù)
?load ( InputStream inStream)切省,從輸入流中讀取屬性列表(鍵和元素對)。通過對指定的文件進(jìn)行裝載來獲取該文件中的所有鍵 - 值對帕胆。以供 get( String key) 來搜索朝捆。
然后初始化參數(shù)時,只需調(diào)用此函數(shù)即可
線程
多線程真的很復(fù)雜啊懒豹,特別是公共代碼段芙盘,很容易串行驯用,一定要記得如果一個代碼段一次只能允許一個線程訪問,就一定要鎖定儒老,也就是說蝴乔,先給他一把“鑰匙”,只有他出來了驮樊,把“鑰匙”交給下一個要執(zhí)行的進(jìn)程才可以薇正,程序才不會亂。線程的sleep函數(shù)很好用囚衔,可以控制程序隔一段時間執(zhí)行一次指定函數(shù)挖腰,雖然用timer類也可以,但是兩個的適用范圍不同练湿,線程很強(qiáng)大猴仑,我還需要繼續(xù)學(xué)習(xí)。
不同持有對象(容器)之間的區(qū)別:
Set類:集合類型肥哎,里面存的元素不重復(fù)辽俗,加入的順序與輸出的順序不一定相等,要讓順序相等就用LinkedSet類即可篡诽;
ArrayList類:實現(xiàn)List接口崖飘,類似于長度可變的動態(tài)數(shù)組,適用于大量隨機(jī)訪問的情況霞捡。但插入和刪除的代價非常高昂坐漏;LinkedList:實現(xiàn)List接口,類似于鏈表碧信,也提供了優(yōu)化的順序訪問赊琳。在插入和刪除方面代價低廉,隨機(jī)訪問代價較高
Queue接口:LinkedList實現(xiàn)了Queue接口砰碴,提供了方法支持隊列的行為躏筏;
Map接口:鍵值對,通過鍵找值或者被稱為字典呈枉,可以通過鍵找值趁尼,也可以通過值找鍵。