目的:
為完成游戲的所有功能捆姜,而逐步實現(xiàn)各項功能藕夫,進而學(xué)習(xí)了單例設(shè)計模式,以及數(shù)組的真實內(nèi)存等重要知識點懂衩,把這些知識點柔和進去完善這個小工程华坦。
技術(shù):
1.單例設(shè)計模式:
(1).單例對象的類必須保證只有一個實例存在愿吹,而且自行實例化并向整個系統(tǒng)提供這個實例
(2).使用場景:確保某個類有且只有一個對象的常見,避免產(chǎn)生多個對象消耗過多的資源或者某種類型的對象只應(yīng)該有且只有一個惜姐。
(3).實現(xiàn)單例模式主要有如下幾個關(guān)鍵點:
①構(gòu)造函數(shù)不對外開放犁跪,一般為private
②通過一個靜態(tài)方法或者枚舉返回單例類對象
③確保單例類的對象有且只有一個,尤其是在多線程環(huán)境下
(4)餓漢式
歹袁,坷衍,,
public class Test {
public static void main(String[] agrs) {
//Poker p = new Poker();
//餓漢式 (進來就創(chuàng)建一個對象)
//1.正常情況下創(chuàng)建一個對
Poker.shaerd.test();//shared為共有的啊
//懶漢式 (要用時在創(chuàng)建)
//Player.getInstance();//即可得到一個對象
Player.getInstance().count +=1;
Player p = Player.getInstance();
p.count += 1;
Player p1 = Player.getInstance();
p1.count += 1;
System.out.print(p1.count);
//應(yīng)為3条舔,count枫耳、p.count、p1.count都使count+=1
}
}
孟抗,迁杨,,
image.png
(5)懶漢式:
凄硼,铅协,,
class Player{
public int count;
//2.創(chuàng)建靜態(tài)變量
private static Player shared = null;
//1.私有構(gòu)造函數(shù)
private Player(){};
//3提供給外部一個訪問的方法
//懶漢式
public static Player getInstance(){
Object b = new Object(); //加鎖 使多線程使用時更安全
synchronized (b) {
if (shared == null) {
//如果沒有創(chuàng)建 那么就創(chuàng)建一個
shared = new Player();
}
}
return shared;
}
}
摊沉,狐史,,
2.數(shù)組的真實內(nèi)存:
數(shù)組里面保存的都是對象的引用(指針 地址)
改變數(shù)組里面的屬性變量
原始對象的值也跟著改變
因為大家都是指向同一個內(nèi)存空間
说墨,骏全,,
class Test2{
public static void main(String[] agrs){
ArrayList<Person> people = new ArrayList<>();
//添加數(shù)據(jù)
Person xw = new Person();
people.add(xw);
Person zs = new Person();
people.add(zs);
//訪問數(shù)據(jù)
Person xw2 = people.get(0);//取出xw進行保存
xw2.name = "小王";
System.out.println(xw2.name);
System.out.println(xw.name); //均為小王
}
}
class Person{
public String name;
}
婉刀,吟温,,