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

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

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

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

設(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)

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

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

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

它屬于行為型設(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ù)庫管理類或緩存管理類等場(chǎng)景。在這些情況下,我們希望只建立一次與數(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í)動(dòng)態(tài)切換算法,促進(jìn)了代碼的靈活性和可維護(hù)性。

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

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

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

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

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

它是一種創(chuàng)建型設(shè)計(jì)模式,可以定義一個(gè)接口或抽象類用于創(chuàng)建對(duì)象,但實(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)建對(duì)象,保持代碼的簡潔性。它將對(duì)象的構(gòu)造過程與表示過程分離。

這種模式特別適合對(duì)象構(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

移動(dòng)開發(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

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

2013-07-29 11:11:29

開發(fā)者折磨方式

2024-07-30 14:09:19

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

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

主站蜘蛛池模板: 另类视频区| 黄色在线免费观看 | 精品久久久久久亚洲精品 | 精品国产一区二区三区性色av | 日日拍夜夜 | 中文字幕一区二区三区四区 | 国产精品久久一区二区三区 | 欧美日韩亚洲视频 | 国产中文一区二区三区 | 69堂永久69tangcom | 亚洲三区在线 | www.久久久久久久久久久 | 一区二区三区国产视频 | 97国产精品视频人人做人人爱 | 国产91在线播放 | 我我色综合| 欧美网站一区 | 四色成人av永久网址 | 国产精品中文字幕在线观看 | 伊人看片 | 影音先锋久久 | av日韩在线播放 | 亚洲精品一区在线观看 | 成人自拍视频网站 | 欧美成人精品一区二区男人看 | 中文字幕二区三区 | 国产1区 | 亚洲精品电影在线 | 一区二区三区中文字幕 | 九九综合九九 | 日本黄色短片 | 国产精品美女久久久久久久久久久 | 综合久久av| 久久久久国产精品免费免费搜索 | 久草色播 | 91在线视频免费观看 | 91高清视频在线观看 | 日日噜噜噜夜夜爽爽狠狠视频97 | 超碰97人人人人人蜜桃 | 久久精品国产一区老色匹 | 欧美一级大片免费看 |