設計模式:解決某一類問題最行之有效的方法。
單例設計模式:解決乙個類在記憶體只存在乙個物件。
想要保證物件唯一。
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 作用 可以保證乙個類的唯一性 使用場景 多個程式都要使用乙個配置檔案中的資料,而且實現資料共享和多程式的資料交換。必須要將多個資料封裝到乙個物件中,而...