成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

代碼更優雅!開發者不能錯過的五種設計模式

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

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

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

這些設計模式是后端開發的重要組成部分,它們為解決問題提供了結構化的方法,從而提高了性能。

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

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

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

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

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

它屬于行為型設計模式。

代碼示例:

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()方法不是線程安全的。如果在多線程環境中使用,需要額外處理線程安全問題。

策略設計模式 (Strategy Design Pattern)

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

它屬于行為型設計模式。

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

工廠設計模式 (Factory Design Pattern)

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

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

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

代碼示例:

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)

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

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

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

代碼示例:

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 類,增強了代碼的靈活性和可維護性。

總結

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

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

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

2024-02-23 08:57:42

Python設計模式編程語言

2025-04-17 00:00:00

開源項目社區

2022-07-18 10:15:16

Python

2023-12-04 11:05:44

2015-11-04 11:17:10

移動開發圖片格式

2024-07-05 11:34:07

2013-06-07 10:07:28

開發者優秀開發者

2015-10-21 13:42:54

iOS開發watch OS2

2022-05-13 08:48:50

React組件TypeScrip

2023-12-21 10:26:30

??Prettier

2011-03-30 08:49:34

WebjQuery

2016-06-13 14:13:27

開發者全新編程語言

2021-11-25 07:01:57

.NET開發編程

2024-11-04 06:30:00

文本匹配模式Python開發

2023-10-12 13:06:00

PyCharm插件CSV

2025-02-10 00:25:00

命令模式擴展機制系統

2013-09-10 09:35:53

移動開發者全能開發者技能

2013-07-29 11:11:29

開發者折磨方式

2022-03-11 12:14:43

CSS代碼前端

2024-07-30 14:09:19

裝飾器Python代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91色网站 | a级片www | 国产大毛片| 久久i | 国内自拍偷拍一区 | 国产激情自拍视频 | 国产午夜精品福利 | 日韩不卡一二区 | 羞羞的视频在线观看 | 成人精品一区 | 精品久久久久久久久亚洲 | 精品一区久久 | 亚洲女人天堂网 | 日日干夜夜操 | 麻豆va| 91视频在线| 日韩精品免费看 | 99热在线播放 | h片在线观看网站 | 欧美日韩国产一区二区 | 狠狠骚 | 亚洲精品欧美一区二区三区 | 免费电影av | 久久综合九九 | 奇米视频777| 国产精品成人69xxx免费视频 | 黄色在线观看网址 | 福利影院在线看 | 91国内精品久久 | 久久伊人一区 | 亚洲韩国精品 | 午夜小电影 | 国产日韩av一区二区 | 欧美美女二区 | 91精品国产91久久综合桃花 | 久久伊人一区 | 日本精品一区二区三区在线观看视频 | 国产在线永久免费 | 日本不卡一区二区三区在线观看 | 欧美在线观看一区 | 国产成人精品免费视频大全最热 |