Java中的單例設計模式

2021-06-26 07:19:16 字數 1670 閱讀 3538

設計模式:解決某一類問題最行之有效的方法。

單例設計模式:解決乙個類在記憶體只存在乙個物件。

想要保證物件唯一。

1,為了避免其他程式過多建立該類物件。先禁止其他程式建立該類物件

2,還為了讓其他程式可以訪問到該類物件,只好在本類中,自定義乙個物件。

3,為了方便其他程式對自定義物件的訪問,可以對外提供一些訪問方式。

這三部怎麼用**體現呢?

1,將建構函式私有化。

2,在類中建立乙個私有靜態的本類物件。

3,提供乙個公有靜態的方法返回值型別是本類可以獲取到該物件。

對於事物該怎麼描述,還怎麼描述。

當需要將該事物的物件保證在記憶體中唯一時,就將以上的三步加上即可。

class singledemo

publicstatic void main(string args)

students1 = student.getstudent();

students2 = student.getstudent();//唯一,s1 s2是同乙個物件

class student

privateint age;

這    //privatestatic student s = new student();加個final就更加嚴謹privatestatic final student s=new student();這兩種方法都可以

3     //private student(){}

步    //publicstatic student getstudent()

//     return s;

publicvoid setage(int age)

this.age= age;

publicint getage()

returnage;

以上是餓漢式!!!

以下是懶漢式!!!

懶漢式**:

privateperson(){}

privatestatic person p = null;//進記憶體還沒物件

publicstatic person getperson()

if(p== null)

p= new person();//呼叫方法時才建立物件;

returnp;

一般開發中是不使用懶漢式的,因為在多執行緒中不安全;

此時我們改一下懶漢式:

privateperson(){}

privatestatic person p = null;//進記憶體還沒物件

publicstatic person getperson()

if(p== null)//加這重判斷是為了優化**,如果p都不等於null了,那麼就直接鎖都不拿了;

synchronized(person.class)//把(多執行緒)所操作的共享資料語句用synchronize**塊包起來。

並且鎖是類的位元組碼檔案物件

{                                        //當乙個執行緒拿到鎖進來後判斷p之後躺了(cpu資源被別的執行緒搶了),

//別的執行緒會因為拿不到鎖而等待,只能等待躺了的執行緒重新搶到cpu

//執行權並執行完語句;

if(p== null)

p= new person();//呼叫方法時才建立物件;

return p;

java 中的設計模式 單例模式

單例模式 當有程式中只想保持物件的乙份例項的時候通常會使用 單例模式 1 在多執行緒中 若每乙份執行緒都儲存乙份例項 通常與threadlocal一起使用 2 若多執行緒訪問同乙份例項 則要加多執行緒訪問控制 reentrantlock 雙重檢查鎖等 public class singleinsta...

Java中的單例設計模式

何為單例設計模式 乙個類在記憶體中只允許存在乙個物件 單例設計模式要保證物件的唯一性 如何保證物件的唯一性 1 為避免其他程式過多建立該類物件,先禁止其他程式建立該類物件 2 為讓其他程式可以訪問該類物件,先在本類中建立乙個物件 3 為了方便其他程式對物件的訪問,要提供一些訪問的方式 如何實現 1 ...

Java中的單例設計模式

這只是一點點 時間有限就先說這些吧,具體後面可以的話說說餓漢式和懶漢式,我也是初者,若有什麼出錯誤之處還請不吝賜教。單例設計模式 singleton 作用 可以保證乙個類的唯一性 使用場景 多個程式都要使用乙個配置檔案中的資料,而且實現資料共享和多程式的資料交換。必須要將多個資料封裝到乙個物件中,而...