?一、注解
@Target? ?
@Target(ElementType.TYPE)
@Target({
????????????????ElementType.TYPE,? ? ? ? ?
????????????????ElementType.METHOD})
@Target({ ElementType.TYPE,//類 ElementType.METHOD,//方法 ElementType.FIELD,//屬性 })//確定自定義的注解的使用范圍?type為類? method為方法? field為屬性
@Retention
@Retention()? //(不添加參數(shù)默認(rèn)是class)
@Retention(RetentionPolicy.CLASS)// 保留到源碼階段和編譯階段@Retention(RetentionPolicy.RUNTIME)// 保留到源碼階段和編譯階段和運(yùn)行階段? ? ? ? ?? @Retention(RetentionPolicy.SOURCE)//保留到源碼階段
//標(biāo)注自定義注解 使用的時(shí)機(jī)
beans 的 包名含義
?*entity ? 實(shí)例, 數(shù)據(jù)庫(kù)中表有什么字段,這里面的類就有什么字段
?* vo: ? ? ?視圖對(duì)象,
?* domain ?: 數(shù)據(jù)庫(kù)表中有的字段,得有,數(shù)據(jù)庫(kù)表中沒(méi)有的字段也可以有
?* pojo ?: entity + ?domain
?
@Test
不需要main方法 來(lái)執(zhí)行方法
可以直接測(cè)試運(yùn)行方法?
?@SuppressWarnings("這里輸入提示信息")//消除編譯時(shí)出現(xiàn) 過(guò)時(shí)警告提示
?@Deprecated? ?//標(biāo)記過(guò)時(shí)的方法
@SuppressWarnings("彈壓警告") public void getTime(){ // Date date = new Date(); // date.getDay(); sayHi(); } @Deprecated public void sayHi(){ System.out.println("hi"); }
?創(chuàng)建自定義一個(gè)注解
public @interface dd{}
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Auto { int value() default 1; String name(); } @Auto(value = 1,name = "saa") class Doctor{}
注解中只有一個(gè)參數(shù)默認(rèn)名字為value,后接default表默認(rèn)值,這時(shí)@Auto中可直接添加值
除此之外得寫 參數(shù)名 = xxx
?二、設(shè)計(jì)模式 23種模式
·設(shè)計(jì)模式是在大量的實(shí)踐中總結(jié)和理論化之后優(yōu)選的代碼結(jié)構(gòu),編程模式,解決問(wèn)題的風(fēng)格
一、創(chuàng)建型模式? 5
單例模式
工廠方法模式
抽象工廠模式
原型模式
建造者模式
二、結(jié)構(gòu)型模式? 7
適配器模式
橋接模式
裝飾模式
組和模式
外觀模式
享元模式
代理模式
三、行為型模式? 11
模板方法模式
命令模式
迭代器模式
觀察者模式
中介模式
備忘錄模式
狀態(tài)模式
解釋器模式
職責(zé)鏈模式
策略模式
三、設(shè)計(jì)模式的六大原則
1、開閉原則
對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉
設(shè)計(jì)文件時(shí)(類,接口,方法),不要把文件寫死,要考慮文件的拓展性
代碼在升級(jí)的過(guò)程中盡量不要改變和破壞原來(lái)的結(jié)構(gòu)和功能,進(jìn)行擴(kuò)展
2、里氏代換原則
如果調(diào)用的是父類的話,那么換成子類完全可以運(yùn)行
在傳參的時(shí)候,盡量寫成當(dāng)前參數(shù)的父類,這樣可以傳所有這個(gè)參數(shù)的子類,方法更加靈活
3、依賴倒轉(zhuǎn)原則
在開閉原則的基礎(chǔ)上
面向接口編程,依賴抽象不依賴具體? 指接口和實(shí)現(xiàn)類
4、接口隔離原則
一個(gè)類如果能實(shí)現(xiàn)多個(gè)接口。實(shí)現(xiàn)多個(gè)接口降低耦合
不要把所有方法寫在一個(gè)接口中,把有相同特點(diǎn)的方法寫在一個(gè)接口中,方便管理
5、迪米特法則(最少知道原則)
類與類之間減少發(fā)生相互作用
對(duì)象和對(duì)象間減少依賴,使系統(tǒng)功能模塊相對(duì)獨(dú)立
6、合成復(fù)用原則
在一個(gè)新對(duì)象中使用已有的對(duì)象,(已有對(duì)象成為新對(duì)象的屬性)
新對(duì)象通過(guò)向這些對(duì)象通過(guò)委派復(fù)用已有功能。注意不是繼承。
一個(gè)對(duì)象作為另一個(gè)對(duì)象的屬性(引用數(shù)據(jù)類型)
盡量使用合成復(fù)用原則,減少繼承的使用
四、單例模式
概念
一個(gè)類有且僅有一個(gè)實(shí)例,自行實(shí)例化,向整個(gè)系統(tǒng)提供
目的
內(nèi)存中只有一個(gè)實(shí)例,減少內(nèi)存開銷,尤其是頻繁的創(chuàng)建和銷毀
避免對(duì)資源的多重占用比如文件讀寫操作
特點(diǎn)
單例模式的類只提供私有構(gòu)造函數(shù)
類中還有一個(gè)該類的靜態(tài)私有對(duì)象
提供一個(gè)靜態(tài)的共有的方法用于創(chuàng)建獲取它本身的私有靜態(tài)對(duì)象
餓漢式(非延遲加載)
無(wú)論對(duì)象是否用得到,一定會(huì)被創(chuàng)建,類被加載的同時(shí)就創(chuàng)建
懶漢式
?五、工廠模式
優(yōu)點(diǎn)
工廠模式也是用來(lái)創(chuàng)建對(duì)象的 可以實(shí)現(xiàn)一定程度上的松耦合
不需知道對(duì)象創(chuàng)建的過(guò)程 只要知道調(diào)用接口傳入的參數(shù)即可
概念
定義一個(gè)用于創(chuàng)建對(duì)象的接口 讓殊相類決定將哪一個(gè)類實(shí)例化
Factory Metod 使用一個(gè)類的實(shí)例化延遲到其實(shí)現(xiàn)類 類
3案例
?工廠獨(dú)立于需求之外,負(fù)責(zé)生產(chǎn)對(duì)象的具體方法
需求是工廠生產(chǎn)水果 水果可以是蘋果 香蕉 橘子
那么可以建立工廠類? 水果父類? 具體的水果子類
水果又可以添加夏天要生產(chǎn)的西瓜,冬天吃的地瓜
最好寫成接口,不要寫死成具體類
最后案例測(cè)試文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-709503.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-709503.html
到了這里,關(guān)于day39 注解 設(shè)計(jì)模式(單例模式和工廠模式)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!