單例模式是一種創建型設計模式,確保類只有一個實例,并提供一個全局訪問點。在Java中,實現單例模式通常有以下幾種方式:
工廠模式是一種創建型設計模式,用于創建對象的接口,但讓子類決定實例化哪個類。在Java中,工廠模式通常包含一個接口和多個實現該接口的工廠類,示例代碼如下:
// 接口
public interface Shape {
void draw();
}
// 實現類
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Circle.draw()");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Rectangle.draw()");
}
}
// 工廠類
public class ShapeFactory {
public static Shape createShape(String shapeType) {
if (shapeType.equalsIgnoreCase("Circle")) {
return new Circle();
} else if (shapeType.equalsIgnoreCase("Rectangle")) {
return new Rectangle();
}
return null;
}
}
// 使用工廠類創建對象
public class FactoryPatternDemo {
public static void main(String[] args) {
Shape circle = ShapeFactory.createShape("Circle");
Shape rectangle = ShapeFactory.createShape("Rectangle");
circle.draw();
rectangle.draw();
}
}
觀察者模式是一種行為設計模式,定義了一種一對多的依賴關系,當一個對象的狀態發生變化時,其所有依賴者都會收到通知并自動更新。在Java中,可以使用Java內置的Observer和Observable類實現觀察者模式,示例代碼如下:
// 被觀察者
public class Subject extends Observable {
private int state;
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
setChanged();
notifyObservers(state);
}
}
// 觀察者
public class Observer implements java.util.Observer {
public void update(Observable o, Object arg) {
System.out.println("State changed to: " + arg);
}
}
// 使用觀察者模式
public class ObserverPatternDemo {
public static void main(String[] args) {
Subject subject = new Subject();
Observer observer1 = new Observer();
Observer observer2 = new Observer();
subject.addObserver(observer1);
subject.addObserver(observer2);
subject.setState(1);
subject.setState(2);
}
}
在上述例子中,Subject類繼承自Observable類,用于管理觀察者列表并通知觀察者狀態變化;Observer類實現了java.util.Observer接口,用于接收被觀察者的通知。通過使用Observer和Observable類,可以方便地實現觀察者模式。