偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

數(shù)據(jù)庫 其他數(shù)據(jù)庫
Order類的構(gòu)造方法被設(shè)置為私有,并且未提供任何 setter 方法。這強(qiáng)制我們使用 Builder 類,增強(qiáng)了代碼的靈活性和可維護(hù)性。

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

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

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

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

觀察者設(shè)計(jì)模式 (Observer Design Pattern)

如果我們需要在對象之間建立一對多的關(guān)系,可以使用這種設(shè)計(jì)模式。

一個(gè)類負(fù)責(zé)跟蹤每個(gè)觀察者對象的狀態(tài),當(dāng)檢測到變化時(shí),通知這些觀察者對象。

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

它屬于行為型設(shè)計(jì)模式。

代碼示例:

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);
        }
    }
}

單例設(shè)計(jì)模式 (Singleton Design Pattern)

當(dāng)我們需要一個(gè)類只有一個(gè)實(shí)例時(shí),可以使用單例設(shè)計(jì)模式。

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

代碼示例:

public class SingletonDesignPattern {
    private static SingletonDesignPattern instance;


    private SingletonDesignPattern() {}


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

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

策略設(shè)計(jì)模式 (Strategy Design Pattern)

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

它屬于行為型設(shè)計(jì)模式。

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

工廠設(shè)計(jì)模式 (Factory Design Pattern)

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

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

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

代碼示例:

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;
        }
    }
}

構(gòu)建器設(shè)計(jì)模式 (Builder Design Pattern)

構(gòu)建器設(shè)計(jì)模式通過一步步構(gòu)建對象,保持代碼的簡潔性。它將對象的構(gòu)造過程與表示過程分離。

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

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

代碼示例:

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類的構(gòu)造方法被設(shè)置為私有,并且未提供任何 setter 方法。這強(qiáng)制我們使用 Builder 類,增強(qiáng)了代碼的靈活性和可維護(hù)性。

總結(jié)

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

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

責(zé)任編輯:武曉燕 來源: 路條編程
相關(guān)推薦

2024-02-23 08:57:42

Python設(shè)計(jì)模式編程語言

2025-04-17 00:00:00

開源項(xiàng)目社區(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ā)者

2015-10-21 13:42:54

iOS開發(fā)watch OS2

2023-12-21 10:26:30

??Prettier

2022-05-13 08:48:50

React組件TypeScrip

2011-03-30 08:49:34

WebjQuery

2016-06-13 14:13:27

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

2021-11-25 07:01:57

.NET開發(fā)編程

2024-11-04 06:30:00

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

2023-10-12 13:06:00

PyCharm插件CSV

2022-03-11 12:14:43

CSS代碼前端

2025-02-10 00:25:00

命令模式擴(kuò)展機(jī)制系統(tǒng)

2013-09-10 09:35:53

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

2013-07-29 11:11:29

開發(fā)者折磨方式

2024-07-30 14:09:19

裝飾器Python代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號