色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java的單例模式和工廠模式

趙雅婷1年前7瀏覽0評論

Java是一種廣泛應(yīng)用的編程語言,其擁有許多設(shè)計模式來優(yōu)化代碼的結(jié)構(gòu)和性能。在本篇文章中,我將介紹兩種常用的設(shè)計模式:單例模式和工廠模式。

1. 單例模式

單例模式是一種創(chuàng)建型設(shè)計模式,該模式確保一個類只有一個實例,并提供一個全局訪問點。這種模式允許在系統(tǒng)中隨處訪問唯一的實例,從而確保該實例的狀態(tài)不會被其他對象更改。

public class Singleton {
private static Singleton instance;
private Singleton() {}
public static synchronized Singleton getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance;
}
public void showMessage() {
System.out.println("Hello World!");
}
}

在上面的示例代碼中,Singleton類的構(gòu)造函數(shù)被聲明為私有的,這意味著它只能在類內(nèi)部進行實例化。getInstance()方法檢查實例是否存在,如果不存在,則創(chuàng)建新實例并返回其引用。由于getInstance()是同步的,因此只有一個線程可以訪問它,從而保證了只有一個實例被創(chuàng)建。

2. 工廠模式

工廠模式是一種創(chuàng)建型設(shè)計模式,用于將對象的創(chuàng)建過程從客戶端代碼中解耦出來。這種模式允許創(chuàng)建不同類型的對象,而無需暴露它們的創(chuàng)建邏輯。在工廠模式中,客戶端代碼不會直接調(diào)用對象的構(gòu)造函數(shù),而是通過工廠類創(chuàng)建對象。

public interface Shape {
void draw();
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Inside Rectangle::draw() method.");
}
}
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Inside Square::draw() method.");
}
}
public class ShapeFactory {
public Shape getShape(String shapeType){
if(shapeType == null){
return null;
}		
if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
} else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
return null;
}
}

在上面的代碼示例中,Shape是一個接口,定義了一個draw()方法。Rectangle和Square類都實現(xiàn)了Shape接口,并覆蓋了draw()方法。ShapeFactory是一個工廠類,根據(jù)傳入的參數(shù)來創(chuàng)建不同類型的對象。

使用工廠模式,客戶端代碼可以創(chuàng)建不同的Shape對象,而不需要知道它們的創(chuàng)建邏輯。這種模式使得代碼更清晰和易于維護。