亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

Java面試題中的設計模式問題

小樊
83
2024-06-16 01:22:06
欄目: 編程語言

  1. 請簡要介紹單例模式的概念及其在Java中的實現方式。

單例模式是一種創建型設計模式,確保類只有一個實例,并提供一個全局訪問點。在Java中,實現單例模式通常有以下幾種方式:

  • 餓漢式單例:在類加載時就創建實例,線程安全,但可能造成資源浪費。
  • 懶漢式單例:在首次調用時創建實例,存在線程安全問題,需要加鎖進行同步。
  • 雙重檢查鎖單例:在懶漢式基礎上加鎖,提高性能。
  • 靜態內部類單例:使用靜態內部類實現延遲加載,線程安全。
  1. 什么是工廠模式?請給出一個在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();
    }
}
  1. 什么是觀察者模式?請給出一個在Java中實現觀察者模式的例子。

觀察者模式是一種行為設計模式,定義了一種一對多的依賴關系,當一個對象的狀態發生變化時,其所有依賴者都會收到通知并自動更新。在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類,可以方便地實現觀察者模式。

0
堆龙德庆县| 翼城县| 泗阳县| 德昌县| 景洪市| 宿州市| 乃东县| 吉安市| 九寨沟县| 佳木斯市| 永昌县| 内黄县| 鲁甸县| 邢台市| 珲春市| 海丰县| 龙陵县| 磴口县| 石景山区| 五台县| 东阳市| 灯塔市| 崇义县| 冀州市| 定襄县| 六枝特区| 乃东县| 上高县| 房山区| 大姚县| 盱眙县| 聂荣县| 临安市| 保靖县| 安西县| 淮南市| 禹城市| 隆子县| 阿图什市| 宿松县| 井冈山市|