策略模式

在策略模式(Strategy Pattern)中,一個類的行為或其算法可以在運(yùn)行時更改晕换。這種類型的設(shè)計模式屬于行為型模式。
策略模式中專門有一個對象封裝算法,以便于在運(yùn)行時調(diào)用不通算法
實(shí)現(xiàn)一個策略模式

  1. 對一組對象按照其相關(guān)字段進(jìn)行排序
  2. 排序采用簡單的插入排序
  3. 封裝一個transtion對象去實(shí)現(xiàn)排序規(guī)則算法(仔細(xì)看transtion封裝的代碼)
package com.snail.basic;

import java.util.Comparator;

public class Insertion {
    public static void sort(Object[] a, Comparator c){
        int N = a.length;
        for (int i = 1; i < N; i++) {
            for (int j = i; j >0 && less(c,a[j],a[j-1]); j--) {
                exch(a,j,j-1);
            }
        }
    }
    public static boolean less(Comparator c,Object v,Object w){
        return c.compare(v,w)<0;
    }
    public static void exch(Object[] a,int i,int j){
        Object t = a[i];
        a[i]=a[j];
        a[j]=t;
    }
    public static void main(String[] args) {
        // 隨意幾個對象 包含who when amount 等字段,按照不同字段排序
        Object[] a = new Object[5];
        Insertion.sort(a,new Transaction.WhoOrder());
        Insertion.sort(a,new Transaction.WnenOrder());
        Insertion.sort(a,new Transaction.HowMuchOrder());

    }
}
package com.snail.basic;

import java.util.Comparator;
import java.util.Date;

public class Transaction {
    private final String who = null;
    private final Date when = null;
    private final double amount = 0.0;
    public static class WhoOrder implements Comparator<Transaction>{
        @Override
        public int compare(Transaction v, Transaction w) {
            return v.who.compareTo(w.who);
        }
    }
    public static class WnenOrder implements Comparator<Transaction>{
        @Override
        public int compare(Transaction v, Transaction w) {
            return v.when.compareTo(w.when);
        }
    }
    public static class HowMuchOrder implements Comparator<Transaction>{
        @Override
        public int compare(Transaction v, Transaction w) {
            if(v.amount < w.amount) return -1;
            if(v.amount > w.amount) return +1;
            return 0;
        }
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末珠插,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子颖对,更是在濱河造成了極大的恐慌捻撑,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缤底,死亡現(xiàn)場離奇詭異顾患,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)个唧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門江解,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人徙歼,你說我怎么就攤上這事犁河。” “怎么了魄梯?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵桨螺,是天一觀的道長。 經(jīng)常有香客問我酿秸,道長灭翔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任辣苏,我火速辦了婚禮肝箱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稀蟋。我一直安慰自己煌张,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布退客。 她就那樣靜靜地躺著唱矛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪井辜。 梳的紋絲不亂的頭發(fā)上绎谦,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機(jī)與錄音粥脚,去河邊找鬼窃肠。 笑死,一個胖子當(dāng)著我的面吹牛刷允,可吹牛的內(nèi)容都是我干的冤留。 我是一名探鬼主播碧囊,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼纤怒!你這毒婦竟也來了糯而?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤泊窘,失蹤者是張志新(化名)和其女友劉穎熄驼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烘豹,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瓜贾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了携悯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祭芦。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖憔鬼,靈堂內(nèi)的尸體忽然破棺而出龟劲,到底是詐尸還是另有隱情,我是刑警寧澤轴或,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布咸灿,位于F島的核電站,受9級特大地震影響侮叮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悼瘾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一囊榜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亥宿,春花似錦卸勺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至映企,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間堰氓,已是汗流浹背挤渐。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留双絮,地道東北人浴麻。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓得问,卻偏偏與公主長得像,于是被迫代替她去往敵國和親软免。 傳聞我的和親對象是個殘疾皇子宫纬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1 場景問題# 1.1 報價管理## 向客戶報價,對于銷售部門的人來講膏萧,這是一個非常重大漓骚、非常復(fù)雜的問題,對不同的...
    七寸知架構(gòu)閱讀 5,064評論 9 62
  • 【學(xué)習(xí)難度:★☆☆☆☆向抢,使用頻率:★★★★☆】直接出處:策略模式梳理和學(xué)習(xí):https://github.com/...
    BruceOuyang閱讀 1,442評論 3 5
  • 1.初識策略模式 定義一系列的算法认境,把它們一個個封裝起來,并且使它們可相互替換挟鸠。本模式使得算法可獨(dú)立于使用它的客戶...
    王偵閱讀 1,448評論 0 3
  • 目錄 本文的結(jié)構(gòu)如下: 引言 什么是策略模式 模式的結(jié)構(gòu) 典型代碼 代碼示例 策略模式和模板方法模式的區(qū)別 優(yōu)點(diǎn)和...
    w1992wishes閱讀 844評論 1 7
  • 本文僅僅為入門叉信,高手勿噴。 實(shí)際工作中艘希,我們總會遇到類似如下的需求:某支付系統(tǒng)接入以下幾種商戶進(jìn)行充值:易寶網(wǎng)易硼身,...
    JarvanMo閱讀 14,232評論 14 26