自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

代碼更優(yōu)雅!開發(fā)者不能錯過的五種設計模式

數據庫 其他數據庫
Order類的構造方法被設置為私有,并且未提供任何 setter 方法。這強制我們使用 Builder 類,增強了代碼的靈活性和可維護性。

在軟件開發(fā)中,我們常常會遇到一些常見類型的問題。

設計模式通過提供高效且經過驗證的方法來處理這些問題,從而幫助開發(fā)人員創(chuàng)建高效且具有適應性的解決方案。

這些設計模式是后端開發(fā)的重要組成部分,它們?yōu)榻鉀Q問題提供了結構化的方法,從而提高了性能。

接下來,我們簡要討論五種設計模式,這些模式在軟件開發(fā)人員中非常受歡迎。

觀察者設計模式 (Observer Design Pattern)

如果我們需要在對象之間建立一對多的關系,可以使用這種設計模式。

一個類負責跟蹤每個觀察者對象的狀態(tài),當檢測到變化時,通知這些觀察者對象。

這種模式可用于分布式事件處理。

它屬于行為型設計模式。

代碼示例:

import java.util.ArrayList;
import java.util.List;


interface Observer {
    void perform(String message);
}


class FirstObserver implements Observer {
    private String name;


    public FirstObserver(String name) {
        this.name = name;
    }


    public void perform(String message) {
        System.out.println(name + " received update: " + message);
    }
}


class SecondObserver implements Observer {
    private String name;


    public SecondObserver(String name) {
        this.name = name;
    }


    public void perform(String message) {
        System.out.println(name + " received update: " + message);
    }
}


class Tracker {
    private List<Observer> observers = new ArrayList<>();


    public void addObserver(Observer observer) {
        observers.add(observer);
    }


    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }


    public void notifyObservers(String message) {
        for (Observer observer : observers) {
            observer.perform(message);
        }
    }
}

單例設計模式 (Singleton Design Pattern)

當我們需要一個類只有一個實例時,可以使用單例設計模式。

這通常適用于數據庫管理類或緩存管理類等場景。在這些情況下,我們希望只建立一次與數據庫或緩存的連接。

代碼示例:

public class SingletonDesignPattern {
    private static SingletonDesignPattern instance;


    private SingletonDesignPattern() {}


    public static SingletonDesignPattern getInstance() {
        if (instance == null) {
            instance = new SingletonDesignPattern();
        }
        return instance;
    }
}

注意,上述getInstance()方法不是線程安全的。如果在多線程環(huán)境中使用,需要額外處理線程安全問題。

策略設計模式 (Strategy Design Pattern)

策略設計模式通過將算法與其上下文分離并在運行時動態(tài)切換算法,促進了代碼的靈活性和可維護性。

它屬于行為型設計模式。

這種模式允許我們在運行時動態(tài)地改變算法,從而提高了代碼的可擴展性。

工廠設計模式 (Factory Design Pattern)

如果一個類有多個子類,并且我們需要根據某些輸入選擇具體的子類,可以使用工廠設計模式。

這種模式避免了父類和子類之間的緊耦合。

它是一種創(chuàng)建型設計模式,可以定義一個接口或抽象類用于創(chuàng)建對象,但實例化的類由子類決定。

代碼示例:

interface Shape {
    void draw();
}


class Circle implements Shape {
    public void draw() {
        System.out.println("This is a circle");
    }
}


class Rectangle implements Shape {
    public void draw() {
        System.out.println("This is a rectangle");
    }
}


class ShapeFactory {
    public Shape getShape(String shapeType) {
        switch(shapeType){
            case "CIRCLE":
                return new Circle();
            case "RECTANGLE":
                return new Rectangle();
            default:
                return null;
        }
    }
}

構建器設計模式 (Builder Design Pattern)

構建器設計模式通過一步步構建對象,保持代碼的簡潔性。它將對象的構造過程與表示過程分離。

這種模式特別適合對象構造過程復雜或有多種創(chuàng)建方式的情況。

我們可以通過創(chuàng)建一個靜態(tài)內部類,并賦予其與外部類相同的屬性,來實現這種模式。

代碼示例:

public class Order {


    private final List<Item> items;
    private final String customerName;
    private final Address deliveryAddress;


    private Order(List<Item> items, String customerName, Address deliveryAddress) {
        this.items = items;
        this.customerName = customerName;
        this.deliveryAddress = deliveryAddress;
    }


    public static class Builder {
        private List<Item> items = new ArrayList<>();
        private String customerName;
        private Address deliveryAddress;


        public Builder addItem(Item item) {
            items.add(item);
            return this;
        }


        public Builder setCustomerName(String customerName) {
            this.customerName = customerName;
            return this;
        }


        public Builder setDeliveryAddress(Address deliveryAddress) {
            this.deliveryAddress = deliveryAddress;
            return this;
        }


        public Order build() {
            return new Order(items, customerName, deliveryAddress);
        }
    }
}

注意,Order類的構造方法被設置為私有,并且未提供任何 setter 方法。這強制我們使用 Builder 類,增強了代碼的靈活性和可維護性。

總結

以上介紹了幾種在組織中廣泛使用的設計模式。此外,還有裝飾器模式、適配器模式、外觀模式等設計模式。

掌握這些設計模式可以極大地提高軟件開發(fā)效率,幫助我們更好地管理復雜性,并編寫出靈活、可復用且干凈的代碼。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2024-02-23 08:57:42

Python設計模式編程語言

2025-04-17 00:00:00

開源項目社區(qū)

2022-07-18 10:15:16

Python

2023-12-04 11:05:44

2015-11-04 11:17:10

移動開發(fā)圖片格式

2024-07-05 11:34:07

2013-06-07 10:07:28

開發(fā)者優(yōu)秀開發(fā)者

2023-12-21 10:26:30

??Prettier

2022-05-13 08:48:50

React組件TypeScrip

2011-03-30 08:49:34

WebjQuery

2015-10-21 13:42:54

iOS開發(fā)watch OS2

2021-11-25 07:01:57

.NET開發(fā)編程

2016-06-13 14:13:27

開發(fā)者全新編程語言

2025-02-10 00:25:00

命令模式擴展機制系統(tǒng)

2022-03-11 12:14:43

CSS代碼前端

2024-11-04 06:30:00

文本匹配模式Python開發(fā)

2023-10-12 13:06:00

PyCharm插件CSV

2013-09-10 09:35:53

移動開發(fā)者全能開發(fā)者技能

2024-07-30 14:09:19

裝飾器Python代碼

2021-03-09 09:00:00

Python開發(fā)工具
點贊
收藏

51CTO技術棧公眾號