學習到java一共有23種設計模式,設計模式是被大多數人知曉,重複使用,約定俗成的程式碼經驗總結。每種設計模式都代表了在專案中會重複發生的問題,所以合理的運用設計模式可以完美的解決許多問題。
學習java的設計模式是很必要的。雖然在物件導向還沒學到繼承和接口,但是23中設計模式中的單例模式已經可以了解了。
單例物件(Singleton)是一種常用的設計模式。在Java應用中,單例物件能保證在一個JVM中,該物件只有一個實例存在。具體有兩種表現形式:
package 面向对象;//单例设计模式第一种public class Singleton {public static void main(String[] args) { SingletonDemo a=SingletonDemo.getInstance(); } }class SingletonDemo {private static SingletonDemo a =null;private SingletonDemo(){}public static SingletonDemo getInstance() {if(a==null) { SingletonDemo a=new SingletonDemo(); }return a; } }
這種方式可以看出在呼叫方法時才創建新的對象,但是在多執行緒時容易產生問題,所以一般開發用的是下面的一種方式。
1 package 面向对象; 2 3 public class Singleton_2 4 { 5 public static void main(String[] args) 6 { 7 Singleton_2Demo a=Singleton_2Demo.getInstance(); 8 } 9 }10 11 class Singleton_2Demo12 {13 private Singleton_2Demo(){}14 private static Singleton_2Demo a=new Singleton_2Demo();15 public static Singleton_2Demo getInstance()16 {17 return a;18 }19 }
這種方式簡單,不用考慮多執行緒的問題
透過這個設計模式對之前學習時寫的物件導向的練習調整了一下,實現了單例的模式。
原始程式碼:
package 面向对象; class Student { private String name;private int number;private String sex;private boolean learn;private String a; Student() { name="未知"; number=000; sex="未知"; learn=false; a="未知"; } public void setName(String name) { this.name=name; } public void setNumber(int number) { this.number=number; } public void setSex(String sex) { this.sex=sex; } public void setLearn(boolean learn) { this.learn=learn; } void scan() {if(this.learn==true) { a="在学习"; }else{ a="不在学习"; } System.out.print("姓名:"+this.name+" 学号:"+this.number+" 性别;"+this.sex+" 是否在学习:"+a); } } class Data { public static void main(String[] arg) { Student XiaoMin=new Student(); XiaoMin.setName("小明"); XiaoMin.setNumber(13023); XiaoMin.setSex("男"); XiaoMin.setLearn(true); XiaoMin.scan(); } }
#單一範例模式:
package 面向对象;//实现单例设计模式 class Student_1 { private String name;private int number;private String sex;private boolean learn;private String a; private Student_1() { name="未知"; number=000; sex="未知"; learn=false; a="未知"; } private static Student_1 b=new Student_1(); public static Student_1 getInstance() { return b; } public void setName(String name) { this.name=name; } public void setNumber(int number) { this.number=number; } public void setSex(String sex) { this.sex=sex; } public void setLearn(boolean learn) { this.learn=learn; } void scan() {if(this.learn==true) { a="在学习"; }else{ a="不在学习"; } System.out.print("姓名:"+this.name+" 学号:"+this.number+" 性别;"+this.sex+" 是否在学习:"+a); } } class Data_2 { public static void main(String[] arg) { Student_1 XiaoMin=Student_1.getInstance(); XiaoMin.setName("小王"); XiaoMin.setNumber(13023); XiaoMin.setSex("男"); XiaoMin.setLearn(true); XiaoMin.scan(); } }
以上是java設計模式中單例模式講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!