国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java 設(shè)計(jì)者模式以及與Spring關(guān)系(七) 命令和迭代器模式

這篇具有很好參考價(jià)值的文章主要介紹了Java 設(shè)計(jì)者模式以及與Spring關(guān)系(七) 命令和迭代器模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡(jiǎn)介:

本文是個(gè)系列一次會(huì)出兩個(gè)設(shè)計(jì)者模式作用,如果有關(guān)聯(lián)就三個(gè),除此外還會(huì)講解在spring中作用。

23設(shè)計(jì)者模式以及重點(diǎn)模式

我們都知道設(shè)計(jì)者模式323種設(shè)計(jì)模式,標(biāo)紅是特別重要的設(shè)計(jì)者模式建議都會(huì),而且熟讀于心,標(biāo)藍(lán)是指其次重要建議也要明白。

(1)創(chuàng)建型模式:單例模式抽象工廠模式、構(gòu)建者模式工廠模式、原型模式。

(2)結(jié)構(gòu)型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式

(3)行為型模式:訪問者模式、模版方法模式命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式、狀態(tài)模式、策略模式、職責(zé)鏈模式。

Java 設(shè)計(jì)者模式以及與Spring關(guān)系(七) 命令和迭代器模式,java,java,spring,迭代器模式

命令模式(Command Pattern)

命令模式是一種行為型設(shè)計(jì)模式,它將請(qǐng)求或簡(jiǎn)單的操作封裝成一個(gè)對(duì)象。這種模式的主要目的是將請(qǐng)求發(fā)送者與接收者解耦,使得發(fā)送者和接收者不直接交互。命令模式允許將請(qǐng)求排隊(duì)處理、記錄請(qǐng)求日志以及實(shí)現(xiàn)可撤銷的操作。

組成部分:
  1. 命令接口(Command):定義執(zhí)行操作的接口。
  2. 具體命令(ConcreteCommand):實(shí)現(xiàn)命令接口的類,定義了接收者和動(dòng)作之間的綁定關(guān)系。
  3. 接收者(Receiver):知道如何實(shí)施和執(zhí)行一個(gè)請(qǐng)求相關(guān)的操作。
  4. 調(diào)用者(Invoker):要求命令對(duì)象執(zhí)行請(qǐng)求。
  5. 客戶端(Client):創(chuàng)建具體命令對(duì)象,并設(shè)置其接收者。

命令模式 主要用于將操作的請(qǐng)求者和執(zhí)行者解耦,允許將請(qǐng)求封裝成對(duì)象,從而使用不同的請(qǐng)求、隊(duì)列或日志參數(shù)化其他對(duì)象,并支持可撤銷的操作。

示例
// 命令接口
interface Command {
    void execute();
}

// 接收者
class Light {
    public void turnOn() {
        System.out.println("The light is on");
    }

    public void turnOff() {
        System.out.println("The light is off");
    }
}

// 具體命令
class TurnOnCommand implements Command {
    private Light light;

    public TurnOnCommand(Light light) {
        this.light = light;
    }

    public void execute() {
        light.turnOn();
    }
}

class TurnOffCommand implements Command {
    private Light light;

    public TurnOffCommand(Light light) {
        this.light = light;
    }

    public void execute() {
        light.turnOff();
    }
}

// 調(diào)用者
class RemoteControl {
    private Command command;

    public void setCommand(Command command) {
        this.command = command;
    }

    public void pressButton() {
        command.execute();
    }
}

// 客戶端
public class CommandPatternDemo {
    public static void main(String[] args) {
        Light light = new Light();
        Command turnOn = new TurnOnCommand(light);
        Command turnOff = new TurnOffCommand(light);

        RemoteControl control = new RemoteControl();
        control.setCommand(turnOn);
        control.pressButton();
        control.setCommand(turnOff);
        control.pressButton();
    }
}

????????在這個(gè)例子中,Light 是一個(gè)接收者,TurnOnCommandTurnOffCommand 是具體命令,它們實(shí)現(xiàn)了 Command 接口。RemoteControl 是調(diào)用者,它通過 pressButton 方法來執(zhí)行命令。客戶端代碼創(chuàng)建了命令對(duì)象并將其與接收者關(guān)聯(lián)。

迭代器模式(Iterator Pattern)

迭代器模式是一種行為型設(shè)計(jì)模式,它提供一種方法來順序訪問聚合對(duì)象中的各個(gè)元素,而又無需暴露該對(duì)象的內(nèi)部表示。

組成部分:
  1. 迭代器接口(Iterator):定義訪問和遍歷元素的接口。
  2. 具體迭代器(ConcreteIterator):實(shí)現(xiàn)迭代器接口,負(fù)責(zé)管理當(dāng)前元素的位置,并能夠計(jì)算出下一個(gè)元素。
  3. 聚合接口(Aggregate):定義創(chuàng)建相應(yīng)迭代器對(duì)象的接口。
  4. 具體聚合(ConcreteAggregate):實(shí)現(xiàn)聚合接口,返回一個(gè)具體迭代器的實(shí)例。

迭代器模式 用于順序訪問集合對(duì)象的元素,而不需要暴露其底層表示,提供了一種統(tǒng)一的方法來遍歷各種類型的集合。

示例
import java.util.*;

// 迭代器接口
interface Iterator {
    boolean hasNext();
    Object next();
}

// 聚合接口
interface Container {
    Iterator getIterator();
}

// 具體聚合
class NameRepository implements Container {
    public String names[] = {"John", "Doe", "Jane", "Smith"};

    @Override
    public Iterator getIterator() {
        return new NameIterator();
    }

    private class NameIterator implements Iterator {
        int index;

        @Override
        public boolean hasNext() {
            return index < names.length;
        }

        @Override
        public Object next() {
            if (this.hasNext()) {
                return names[index++];
            }
            return null;
        }
    }
}

// 客戶端
public class IteratorPatternDemo {
    public static void main(String[] args) {
        NameRepository namesRepository = new NameRepository();

        for (Iterator iter = namesRepository.getIterator(); iter.hasNext();) {
            String name = (String) iter.next();
            System.out.println("Name : " + name);
        }
    }
}

????????在這個(gè)示例中,NameRepository 是一個(gè)具體聚合,它實(shí)現(xiàn)了 Container 接口,并內(nèi)部定義了 NameIterator,這是一個(gè)具體的迭代器實(shí)現(xiàn)??蛻舳送ㄟ^ NameRepositorygetIterator 方法獲取迭代器,并使用它來遍歷名稱。文章來源地址http://www.zghlxwxcb.cn/news/detail-821094.html

到了這里,關(guān)于Java 設(shè)計(jì)者模式以及與Spring關(guān)系(七) 命令和迭代器模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java 設(shè)計(jì)模式——命令模式

    Java 設(shè)計(jì)模式——命令模式

    (1)日常生活中,我們出去吃飯都會(huì)遇到下面的場(chǎng)景: (2)命令模式是一種行為型設(shè)計(jì)模式, 它通過將請(qǐng)求封裝為一個(gè)對(duì)象,使得可以靈活地參數(shù)化客戶端對(duì)象,同時(shí)也能夠?qū)⒄?qǐng)求隊(duì)列或記錄日志、撤銷操作等操作進(jìn)行處理 。命令模式的作用在于 解耦請(qǐng)求發(fā)送者和接收者

    2024年02月06日
    瀏覽(14)
  • 03-JAVA設(shè)計(jì)模式-命令模式

    03-JAVA設(shè)計(jì)模式-命令模式

    命令模式(Command Pattern)是一種行為設(shè)計(jì)模式,它將請(qǐng)求封裝為對(duì)象,從而使你可用不同的請(qǐng)求把客戶端與請(qǐng)求的處理者解耦,也稱動(dòng)作模式或事物模式。 在命令模式中,命令對(duì)象封裝了接收者對(duì)象的動(dòng)作,調(diào)用者通過調(diào)用命令對(duì)象來執(zhí)行該動(dòng)作,而無需知道具體的接收者對(duì)

    2024年04月27日
    瀏覽(40)
  • java設(shè)計(jì)模式之命令設(shè)計(jì)模式的前世今生

    命令設(shè)計(jì)模式是什么? 命令設(shè)計(jì)模式是一種行為型設(shè)計(jì)模式,它允許將請(qǐng)求封裝為對(duì)象,并將其傳遞給調(diào)用者,從而使調(diào)用者可以在不知道請(qǐng)求具體細(xì)節(jié)的情況下進(jìn)行操作。命令模式的主要目的是解耦請(qǐng)求的發(fā)送者和接收者,以及通過發(fā)送者和接收者之間的解耦,增強(qiáng)系統(tǒng)的

    2024年02月06日
    瀏覽(29)
  • 【Java 設(shè)計(jì)模式】行為型之命令模式

    命令模式(Command Pattern)是一種行為型設(shè)計(jì)模式,用于將請(qǐng)求封裝為對(duì)象,使得可以參數(shù)化客戶端對(duì)象,并且能夠排隊(duì)、記錄請(qǐng)求,以及支持撤銷操作。在本文中,我們將深入研究Java中命令模式的定義、結(jié)構(gòu)、使用場(chǎng)景以及如何在實(shí)際開發(fā)中應(yīng)用。 命令模式是一種行為型設(shè)

    2024年01月23日
    瀏覽(27)
  • Java設(shè)計(jì)模式-策略模式-基于Spring實(shí)現(xiàn)

    Java設(shè)計(jì)模式-策略模式-基于Spring實(shí)現(xiàn)

    策略模式是一種行為設(shè)計(jì)模式,它允許在運(yùn)行時(shí)選擇算法的行為。它將算法封裝在 獨(dú)立的策略類 中,使得它們可以相互替換,而不影響客戶端代碼。這種模式通過 將算法的選擇從客戶端代碼中分離出來 ,提供了更大的靈活性和可維護(hù)性。 在Java中,策略模式的設(shè)計(jì)理念可以

    2024年02月08日
    瀏覽(26)
  • JAVA設(shè)計(jì)模式第七講:設(shè)計(jì)模式在 Spring 源碼中的應(yīng)用

    JAVA設(shè)計(jì)模式第七講:設(shè)計(jì)模式在 Spring 源碼中的應(yīng)用

    設(shè)計(jì)模式(design pattern)是對(duì)軟件設(shè)計(jì)中普遍存在的各種問題,所提出的解決方案。本文以面試題作為切入點(diǎn),介紹了設(shè)計(jì)模式的常見問題。 我們需要掌握各種設(shè)計(jì)模式的原理、實(shí)現(xiàn)、設(shè)計(jì)意圖和應(yīng)用場(chǎng)景,搞清楚能解決什么問題 。 本文是第七篇:設(shè)計(jì)模式在 Spring 源碼中的

    2024年02月09日
    瀏覽(28)
  • Java設(shè)計(jì)模式之行為型-命令模式(UML類圖+案例分析)

    Java設(shè)計(jì)模式之行為型-命令模式(UML類圖+案例分析)

    目錄 一、基礎(chǔ)概念 二、UML類圖 三、角色設(shè)計(jì) 四、案例分析 4.1、基本實(shí)現(xiàn) 4.2、點(diǎn)餐案例? 五、總結(jié) 1、將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,使您可以用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。 2、對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可撤銷的操作。 3、將命令對(duì)象與執(zhí)行命令的對(duì)象分離,

    2024年02月16日
    瀏覽(23)
  • java Spring中使用到的設(shè)計(jì)模式

    java Spring中使用到的設(shè)計(jì)模式

    單例模式(Singleton Pattern)是java中最簡(jiǎn)單的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。這種模式涉及到一個(gè)單一的類,該類負(fù)責(zé)創(chuàng)建自己的對(duì)象,同時(shí)確保只有單個(gè)對(duì)象被創(chuàng)建。這個(gè)類提供了一種訪問其唯一對(duì)象的方式,可以直接

    2024年02月16日
    瀏覽(26)
  • 【Java設(shè)計(jì)模式 規(guī)范與重構(gòu)】 二 重構(gòu)的保障:?jiǎn)卧獪y(cè)試,以及如何提高代碼可測(cè)試性

    其實(shí)之前的工作中強(qiáng)調(diào)過很多次自己做測(cè)試的重要性,例如講單元測(cè)試的: 【C#編程最佳實(shí)踐 一】單元測(cè)試實(shí)踐 ,講單元測(cè)試規(guī)范的 【阿里巴巴Java編程規(guī)范學(xué)習(xí) 四】Java質(zhì)量安全規(guī)約 ,講接口測(cè)試的: 【C#編程最佳實(shí)踐 十三】接口測(cè)試實(shí)踐 ,這里舊事重提就不再詳細(xì)展開

    2023年04月25日
    瀏覽(136)
  • 設(shè)計(jì)模式之橋接模式,電腦與游戲的關(guān)系

    設(shè)計(jì)模式之橋接模式,電腦與游戲的關(guān)系

    本文主要講述 橋接模式 ,文中使用通俗易懂的案例,使你更好的學(xué)習(xí)本章知識(shí)點(diǎn)并理解原理,做到有道無術(shù)。 橋接模式是23種設(shè)計(jì)模式中 結(jié)構(gòu)型模式 的一種,將實(shí)現(xiàn)與抽象放在兩個(gè)不同的類層次中,使兩個(gè)層次可以獨(dú)立改變,來實(shí)現(xiàn)兩者的解耦,并保持各部分的獨(dú)立性以及

    2024年02月11日
    瀏覽(113)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包