中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

中國(guó)建設(shè)網(wǎng)站企業(yè)網(wǎng)上銀行業(yè)務(wù)功能0元入駐的電商平臺(tái)

中國(guó)建設(shè)網(wǎng)站企業(yè)網(wǎng)上銀行業(yè)務(wù)功能,0元入駐的電商平臺(tái),上海網(wǎng)站建設(shè)的價(jià)格低,內(nèi)網(wǎng)建站軟件系列文章目錄 文章目錄 系列文章目錄前言一、單例模式二、final 關(guān)鍵字總結(jié) 前言 單例模式與final關(guān)鍵字。 一、單例模式 設(shè)計(jì)模式是在大量的實(shí)踐中總結(jié)和理論化之后優(yōu)選的代碼結(jié)構(gòu)、編程風(fēng)格、以及解決問(wèn)題的思考方式。就像是經(jīng)典的棋譜,不同的棋局,我…

系列文章目錄


文章目錄

  • 系列文章目錄
  • 前言
  • 一、單例模式
  • 二、final 關(guān)鍵字
  • 總結(jié)


前言

單例模式與final關(guān)鍵字。


一、單例模式

設(shè)計(jì)模式是在大量的實(shí)踐中總結(jié)和理論化之后優(yōu)選的代碼結(jié)構(gòu)、編程風(fēng)格、以及解決問(wèn)題的思考方式。就像是經(jīng)典的棋譜,不同的棋局,我們用不同的棋譜,免去我們自己在思考和摸索。

單例模式
采取一定的方法保證在整個(gè)軟件系統(tǒng)中,對(duì)某個(gè)類(lèi)只能存在一個(gè)對(duì)象實(shí)例并且該類(lèi)只提供一個(gè)取得對(duì)象實(shí)例的方法
單例模式有兩種方式:1.餓漢式 2.懶漢式
單例模式的實(shí)現(xiàn)
1. 構(gòu)造器私有化,防止直接new
2. 類(lèi)的內(nèi)部創(chuàng)建對(duì)象并且私有化,為了能夠在靜態(tài)方法中,返回對(duì)象,需要將對(duì)象修飾為 static
3. 向外暴露一個(gè)靜態(tài)的公共方法:getlnstance
package com.hspedu.single_;public class SingleTon01 {public static void main(String[] args) {// GirlFriend xh = new GirlFriend("小紅");// GirlFriend xb = new GirlFriend("小白");//通過(guò)方法可以獲取對(duì)象GirlFriend instance = GirlFriend.getInstance();System.out.println(instance);GirlFriend instance2 = GirlFriend.getInstance();System.out.println(instance2);System.out.println(instance == instance2);//T//System.out.println(GirlFriend.n1);//...}
}//有一個(gè)類(lèi), GirlFriend
//只能有一個(gè)女朋友
class GirlFriend {private String name;//public static int n1 = 100;//為了能夠在靜態(tài)方法中, 返回 gf 對(duì)象, 需要將其修飾為 static//對(duì)象, 通常是重量級(jí)的對(duì)象, 餓漢式可能造成創(chuàng)建了對(duì)象, 但是沒(méi)有使用.private static GirlFriend gf = new GirlFriend("小紅紅");//如何保障我們只能創(chuàng)建一個(gè) GirlFriend 對(duì)象//步驟[單例模式-餓漢式]//1. 將構(gòu)造器私有化//2. 在類(lèi)的內(nèi)部直接創(chuàng)建對(duì)象(該對(duì)象是 static)//3. 提供一個(gè)公共的 static 方法, 返回 gf 對(duì)象private GirlFriend(String name) {System.out.println("構(gòu)造器被調(diào)用.");this.name = name;} public static GirlFriend getInstance() {return gf;}@Overridepublic String toString() {return "GirlFriend{" + "name='" + name + '\'' + '}' ;}}
package com.hspedu.single_;/**
* 演示懶漢式的單例模式
*/public class SingleTon02 {public static void main(String[] args) {//new Cat("大黃");//System.out.println(Cat.n1);Cat instance = Cat.getInstance();System.out.println(instance);//再次調(diào)用 getInstanceCat instance2 = Cat.getInstance();System.out.println(instance2);System.out.println(instance == instance2);//T}
} //希望在程序運(yùn)行過(guò)程中, 只能創(chuàng)建一個(gè) Cat 對(duì)象
//使用單例模式
class Cat {private String name;public static int n1 = 999;private static Cat cat ; //默認(rèn)是 null//步驟//1.仍然構(gòu)造器私有化//2.定義一個(gè) static 靜態(tài)屬性對(duì)象//3.提供一個(gè) public 的 static 方法, 可以返回一個(gè) Cat 對(duì)象//4.懶漢式, 只有當(dāng)用戶使用 getInstance 時(shí), 才返回 cat 對(duì)象, 後面再次調(diào)用時(shí), 會(huì)返回上次創(chuàng)建的 cat 對(duì)象// 從而保證了單例private Cat(String name) {System.out.println("構(gòu)造器調(diào)用...");this.name = name;} public static Cat getInstance() {if(cat == null) {//如果還沒(méi)有創(chuàng)建 cat 對(duì)象cat = new Cat("小可愛(ài)");} return cat;} @Overridepublic String toString() {return "Cat{" +"name='" + name + '\'' +'}';}
}
餓漢式vs懶漢式
二者最主要的區(qū)別在于創(chuàng)建對(duì)象的時(shí)機(jī)不同:餓漢式是在類(lèi)加載就創(chuàng)建了對(duì)象實(shí)例而懶漢式是在使用時(shí)才創(chuàng)建
餓漢式不存在線程安全問(wèn)題,懶漢式存在線程安全題,(后面學(xué)習(xí)線程后,會(huì)完善一把)
餓漢式存在浪費(fèi)資源的可能。因?yàn)槿绻绦騿T一個(gè)對(duì)象實(shí)例都沒(méi)有使用,那么餓漢式創(chuàng)建的對(duì)象就浪費(fèi)了,懶漢式是使用時(shí)才創(chuàng)建,就不存在這個(gè)問(wèn)題
在我們javaSE標(biāo)準(zhǔn)類(lèi)中,java.lang.Runtime就是經(jīng)典的單例模式

二、final 關(guān)鍵字

final:最后的,最終的??梢孕揎楊?lèi)、屬性、方法和局部變量。

final用法
1. 當(dāng)不希望類(lèi)被繼承時(shí),可以用final修飾
2. 當(dāng)不希望父類(lèi)的某個(gè)方法被子類(lèi)覆蓋/重寫(xiě)(override)時(shí),可以用final關(guān)鍵字修飾
3. 當(dāng)不希望類(lèi)的的某個(gè)屬性的值被修改,可以用final修飾
4. 當(dāng)不希望某個(gè)局部變量[方法體內(nèi)的形參]被修改,可以使用final修飾
package com.hspedu.final_;public class Final01 {public static void main(String[] args) {E e = new E();//e.TAX_RATE = 0.09;}
} 
//如果我們要求 A 類(lèi)不能被其他類(lèi)繼承
//可以使用 final 修飾 A 類(lèi)
final class A { }//class B extends A {}
class C {//如果我們要求 hi 不能被子類(lèi)重寫(xiě)//可以使用 final 修飾 hi 方法public final void hi() {}
} class D extends C {// @Override// public void hi() {// System.out.println("重寫(xiě)了 C 類(lèi)的 hi 方法..");// }
} //當(dāng)不希望類(lèi)的的某個(gè)屬性的值被修改,可以用 final 修飾
class E {public final double TAX_RATE = 0.08;//常量
} //當(dāng)不希望某個(gè)局部變量被修改, 可以使用 final 修飾
class F {public void cry() {//這時(shí), NUM 也稱(chēng)為 局部常量final double NUM = 0.01;//NUM = 0.9;System.out.println("NUM=" + NUM);}
}
final使用細(xì)則part1
final修飾的屬性又叫常量,一般用XX_XX_XX來(lái)命名
final修飾的屬性在定義時(shí),必須賦初值并且以后不能再修改,賦值可以在如下位置之一【選擇一個(gè)位置賦初值即可]: 定義時(shí)/在構(gòu)造器中/在代碼塊中
如果final修飾的屬性是靜態(tài)的,則初始化的位置只能是:定義時(shí)/在靜態(tài)代碼塊不能在構(gòu)造器中賦值
final類(lèi)不能繼承,但是可以實(shí)例化對(duì)象
如果類(lèi)不是final類(lèi),但是含有final方法, 則該方法雖然不能重寫(xiě),但是可以被繼承
package com.hspedu.final_;public class FinalDetail01 {public static void main(String[] args) {CC cc = new CC();new EE().cal();}
} class AA {/*1. 定義時(shí): 如 public final double TAX_RATE=0.08;2. 在構(gòu)造器中3. 在代碼塊中*/public final double TAX_RATE = 0.08;//1.定義時(shí)賦值public final double TAX_RATE2 ;public final double TAX_RATE3 ;public AA() {//構(gòu)造器中賦值TAX_RATE2 = 1.1;} {//在代碼塊賦值TAX_RATE3 = 8.8;}
} class BB {/*如果 final 修飾的屬性是靜態(tài)的, 則初始化的位置只能是1 定義時(shí) 2 在靜態(tài)代碼塊 不能在構(gòu)造器中賦值。*/public static final double TAX_RATE = 99.9;public static final double TAX_RATE2 ;static {TAX_RATE2 = 3.3;}
} //final 類(lèi)不能繼承, 但是可以實(shí)例化對(duì)象
final class CC { }//如果類(lèi)不是 final 類(lèi), 但是含有 final 方法, 則該方法雖然不能重寫(xiě), 但是可以被繼承
//即, 仍然遵守繼承的機(jī)制.
class DD {public final void cal() {System.out.println("cal()方法");}
} class EE extends DD { }
final使用細(xì)則part2
一般來(lái)說(shuō),如果一個(gè)類(lèi)已經(jīng)是final類(lèi)了,就沒(méi)有必要再將方法修飾成final方法
final不能修飾構(gòu)造方法(即構(gòu)造器)
final和static往往搭配使用,效率更高,不會(huì)導(dǎo)致類(lèi)的加載,底層編譯器做了優(yōu)化處理
包裝類(lèi)(Integer,Double,Float,Boolean等都是final),String也是final類(lèi)
package com.hspedu.final_;public class FinalDetail02 {public static void main(String[] args) {System.out.println(BBB.num);//包裝類(lèi),String 是 final 類(lèi), 不能被繼承}
} //final 和 static 往往搭配使用, 效率更高, 不會(huì)導(dǎo)致類(lèi)加載.底層編譯器做了優(yōu)化處理
class BBB {public final static int num = 10000;static {System.out.println("BBB 靜態(tài)代碼塊被執(zhí)行");} 
}final class AAA{//一般來(lái)說(shuō), 如果一個(gè)類(lèi)已經(jīng)是 final 類(lèi)了, 就沒(méi)有必要再將方法修飾成 final 方法//public final void cry() {}}

總結(jié)

單例模式是非常通用的類(lèi)設(shè)計(jì)模式,final關(guān)鍵字經(jīng)常與static關(guān)鍵字搭配使用。

http://www.risenshineclean.com/news/48750.html

相關(guān)文章:

  • java答題對(duì)戰(zhàn)網(wǎng)站開(kāi)發(fā)巨量廣告投放平臺(tái)
  • 電腦系統(tǒng)做的好的網(wǎng)站百度app客服電話
  • 青島高端網(wǎng)站開(kāi)發(fā)廚師培訓(xùn)機(jī)構(gòu) 廚師短期培訓(xùn)班
  • 有哪些h5做的網(wǎng)站怎么卸載windows優(yōu)化大師
  • wordpress多站點(diǎn)sitemap免費(fèi)建站網(wǎng)站大全
  • 360網(wǎng)站攔截做韶關(guān)新聞最新今日頭條
  • 網(wǎng)站建設(shè)預(yù)算策劃百度seo霸屏軟件
  • 做磁力解析網(wǎng)站今日nba比賽直播
  • java做網(wǎng)站如何引流推廣軟件
  • 介紹國(guó)外的網(wǎng)站有什么不同谷歌瀏覽器下載安裝2022
  • 童裝 技術(shù)支持 東莞網(wǎng)站建設(shè)百度快速收錄seo工具軟件
  • 網(wǎng)站模版制作口碑營(yíng)銷(xiāo)案例分析
  • 東莞專(zhuān)業(yè)網(wǎng)站建站設(shè)計(jì)昆明seocn整站優(yōu)化
  • 網(wǎng)站后臺(tái)都需要什么軟件做瀏覽器大全
  • 濟(jì)南高端網(wǎng)站建設(shè)公司淘寶關(guān)鍵詞怎么優(yōu)化
  • 做網(wǎng)站好的框架重慶高端品牌網(wǎng)站建設(shè)
  • 網(wǎng)站建設(shè)哪家好靈活蘇州久遠(yuǎn)網(wǎng)絡(luò)網(wǎng)絡(luò)建站優(yōu)化科技
  • 股票交易網(wǎng)站開(kāi)發(fā)seo上首頁(yè)排名
  • php mysql網(wǎng)站開(kāi)發(fā)全程實(shí)例推廣方式有哪幾種
  • 網(wǎng)站cms大全枸櫞酸西地那非片的作用及功效
  • 有沒(méi)有做q版頭像的網(wǎng)站seo在線培訓(xùn)機(jī)構(gòu)排名
  • 有哪些做的比較精美的網(wǎng)站長(zhǎng)沙seo
  • 建設(shè)部網(wǎng)站官網(wǎng)造價(jià)工程師孫思新app推廣刷量
  • 政府網(wǎng)站誰(shuí)來(lái)做建網(wǎng)站需要多少錢(qián)
  • 上海企業(yè)公示網(wǎng)優(yōu)化軟件有哪些
  • 靖江有哪些做網(wǎng)站的如何網(wǎng)站優(yōu)化排名
  • 西寧做網(wǎng)站君博認(rèn)同seo軟文是什么意思
  • 寬帶開(kāi)戶多少錢(qián)百度seo在哪里
  • 國(guó)外做寵物產(chǎn)品的網(wǎng)站百度關(guān)鍵詞工具在哪里
  • 企業(yè)申請(qǐng)網(wǎng)站建設(shè)請(qǐng)示朋友圈網(wǎng)絡(luò)營(yíng)銷(xiāo)