欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么在Java項目中實現(xiàn)一個策略模式-創(chuàng)新互聯(lián)

怎么在Java項目中實現(xiàn)一個策略模式?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

為淮安等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及淮安網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為網(wǎng)站制作、做網(wǎng)站、淮安網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

策略模式指:策略模式指將程序中可變部分抽象分離成一系列的算法,并將每一個算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨立于使用它的客戶而獨立變化。

策略模式一般由下面三部分組成:

1. 抽象策略角色: 策略類,通常由一個接口或者抽象類實現(xiàn)。
2. 具體策略角色:包裝了相關的算法和行為。
3. 環(huán)境角色:持有某一個策略類的引用,客戶端調(diào)用。

策略模式設計原則:

1. 把程序中需要變化的部分抽離出來,獨立于不變的部分
2. 面向接口編程,而不是面向實現(xiàn)編程,多作組合 ,少用繼承。(組合 :在類中增加一個私有域,引用另外一個已經(jīng)有的類的實例,通過調(diào)用實例的方法從而獲得新的功能)

應用舉例,以銀行為例,可能有點不恰當

比如我們應用要接入銀行支付功能。我們都知道,銀行都有支付功能,隨著技術的發(fā)展,銀行具有了開通網(wǎng)絡支付的功能?,F(xiàn)在我們遇到的問題是,我們要增加支付的銀行,但是有的銀行還沒有開通網(wǎng)絡銀行,有的已經(jīng)開通了,而且也要把原有接入 的銀行添加上網(wǎng)絡銀行功能(如果已經(jīng)開通的話)。

//銀行基類,為了適應變化,增加了網(wǎng)絡支付處理的策略處理接口BankStrategy
public abstract class Bank {
private BankStrategy mBankStrategy;
public void setmStrategy(BankStrategy mStrategy) {
this.mBankStrategy = mStrategy;
}
public void payMoney() {
System.out.println("我具有支付功能");// 所有銀行共同的特征
}
public abstract void serviceStyle();// 但每個銀行有不同的服務方法(比的就是服務),具體的子類實現(xiàn)
public void netBank(){//開通網(wǎng)上銀行
mBankStrategy.netPay();
}
}
//———-銀行策略接口———————————
public interface BankStrategy {
void netPay();// 添加網(wǎng)絡支付功能
}
//————–增加開通網(wǎng)絡支付的策略實現(xiàn)類————
public class CanNetBank implements BankStrategy {
@Override
public void netPay() {
System.out.println("我已經(jīng)開通網(wǎng)絡支付功能");
}
}
//————–也有不開通網(wǎng)絡支付的銀行—————
public class NoNetBank implements BankStrategy {
@Override
public void netPay() {
System.out.println("我不開通網(wǎng)絡銀行,咋的!");
}
}
//——-地球銀行:現(xiàn)在開通網(wǎng)絡支付——————
public class EarthBank extends Bank {
public EarthBank(){
super();
super.setmStrategy(new CanNetBank());//這里就實現(xiàn)了網(wǎng)絡支付
}
@Override
public void serviceStyle() {
System.out.println("我的服務在事個地球上是最好的!");
}
}
//——–太陽銀行,說離我們太遠了,不開通網(wǎng)絡銀行——————-
public class SunBank extends Bank {
public SunBank(){
super();
super.setmStrategy(new NoNetBank());//這里就不開通了(當然可不調(diào)用 ,只是告訴下實現(xiàn)方法)
}
@Override
public void serviceStyle() {
System.out.println("我的服務像金子一樣發(fā)光!");
}
}
//———測試類———————————–
public class Test {
public static void main(String[] args) {
System.out.println("———測試———–");
Bank duck=null;
duck=new EarthBank();
duck.serviceStyle();
duck.payMoney();
duck.netBank();
System.out.println("———測試———–");
duck=new SunBank();
duck.serviceStyle();
duck.payMoney();
duck.netBank();
}
}

結果打印

怎么在Java項目中實現(xiàn)一個策略模式

策略模式的優(yōu)點:

1、 提供了管理相關的算法策略類,恰當使用繼承可以把公共的代碼轉移到父類里面,避免重復的代碼,使得架構也更加靈活。
2、 提供了可以替換繼承關系的辦法(組合)。繼承也可以處理多種算法或行為,但算法或行為的環(huán)境類就可能會有一些子類,每一個子類提供一個不同的算法或行為。這樣一來算法或行為的使用者就和算法或行為本身混在一起。使得動態(tài)改變算法變得復雜甚至不可行,也不符合開閉原則。
3、 相對于繼承代碼更好地得到復用,同時可以避免使用多重條件轉移語句。

策略模式的缺點:

1、客戶代碼需要了解個策略實現(xiàn)的細節(jié),只適用于客戶端知道所有的算法或行為的情況。
2、 策略模式造成很多的策略類,每個具體策略類都會產(chǎn)生一個新類,增加了對象的數(shù)目。

關于怎么在Java項目中實現(xiàn)一個策略模式問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。

分享題目:怎么在Java項目中實現(xiàn)一個策略模式-創(chuàng)新互聯(lián)
瀏覽路徑:http://aaarwkj.com/article26/ppecg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、云服務器App設計、網(wǎng)站建設定制網(wǎng)站、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
亚洲熟妇av一区二区| 国产又猛又黄又爽无遮挡| 亚洲av永久精品桃色| 亚洲人成伊人成综合网中文| 18以下的人禁止看的视频| 精品一区二区久久久久久网精| 一区二区三区中文在线播放| 欧美精品国产一区二区免费| 国内一级片内射视频播放| 亚洲一区在线观看蜜臀| 日本午夜福利视频在线观看| 亚洲一区二区三区精品日韩| 日韩精品视频在线不卡播放| 日本高清免费观看一区| 欧美日韩精品一区二区三| 亚洲女同中文字幕在线| 亚洲大尺码在线视频香蕉| 免费观看亚洲成人av| 国产激情视频一区二区三区| 亚洲精品高清一区二区| 国产丰满熟女视频免费| 色噜噜噜av天堂九区| 日本欧美亚洲一区二区三区| 日本人妻中文字幕一区| 女同一区二区三区在线| 国产三级黄在线观看| 久久国产精品午夜视频| 欧美成人精品欧美一级黄片| 粉嫩国产av一区二区三区| 欧美国产精品一区二区免费| 一欧美一区二区三区| 日韩中文字幕一二一二区| 一区二区蜜桃在线观看| 在线午夜免费视频观看| 亚洲精品天堂av免费看| 人妻少妇精品视频二区| 日韩高清av不卡一区二区三区| 日韩电影一区二区在线观看中文字幕 | 久草福利资源在线观看视频| 四虎在线观看免费资源| 国产日韩精品一区二区在线|