999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

裝飾者模式在定制化電子商務(wù)中的應(yīng)用

2014-08-07 13:23:01方雅婧饒浩于衛(wèi)紅陳燕
微型電腦應(yīng)用 2014年10期
關(guān)鍵詞:系統(tǒng)設(shè)計

方雅婧,饒浩,于衛(wèi)紅,陳燕

裝飾者模式在定制化電子商務(wù)中的應(yīng)用

方雅婧,饒浩,于衛(wèi)紅,陳燕

隨著電子商務(wù)的發(fā)展,消費者開始不滿足于單一不變的商品,定制化的電子商務(wù)逐漸興起。分析了現(xiàn)有電子商務(wù)系統(tǒng)中定制化實現(xiàn)的不足,提出了將裝飾者設(shè)計模式應(yīng)用到電子商務(wù)定制化系統(tǒng)設(shè)計中的思路和方法。通過實例,比較了完全繼承機(jī)制與裝飾者模式的優(yōu)劣,說明了裝飾者模式在軟件可擴(kuò)展性和可維護(hù)性中的作用。

裝飾者模式;定制化;電子商務(wù);系統(tǒng)設(shè)計

0 引言

20世紀(jì)90年代,基于萬維網(wǎng)的互聯(lián)網(wǎng)技術(shù)突飛猛進(jìn),進(jìn)而使得商務(wù)活動電子化的想法逐步成熟,而后互聯(lián)網(wǎng)開始真正應(yīng)用于商業(yè)交易,電子商務(wù)也日益蓬勃發(fā)展起來[1]。

隨著競爭的激烈、銷售的微利、消費的疲態(tài),傳統(tǒng)電商正面臨著轉(zhuǎn)型的壓力。現(xiàn)在的消費者,在對便捷快速的網(wǎng)購習(xí)以為常之后,開始追求能凸顯自我的個性化。互聯(lián)網(wǎng)本身的互動性使人們可以按照需要進(jìn)行選擇而且具有數(shù)量龐大的潛在用戶基礎(chǔ)。于是,定制化電子商務(wù)的優(yōu)點逐漸體現(xiàn)出來。定制化是C2B電商的一種體現(xiàn),實際上是對傳統(tǒng)B2C購物體驗的進(jìn)一步互動深挖。傳統(tǒng)的B2C模式中所有環(huán)節(jié)都由廠商驅(qū)動,而C2B是由消費者驅(qū)動,以消費者需求為起點,力求發(fā)掘消費者的主動性與積極性的一種商業(yè)模式。毋庸置疑,定制化挖掘了互聯(lián)網(wǎng)的真正潛力,是未來電子商務(wù)的發(fā)展方向[2][3]。

如何實現(xiàn)定制化、個性化是一個難題。個性化意味著消費者的選擇不再是唯一的商品,而是不斷變化的商品。相應(yīng)的軟件系統(tǒng)要面臨著不斷增加的變化,這就要求我們設(shè)計的系統(tǒng)擁有良好的可靠性,可復(fù)用性,可拓展性和可維護(hù)性。如果不進(jìn)行設(shè)計優(yōu)化,整個系統(tǒng)務(wù)必會缺少應(yīng)對變化的能力,而設(shè)計模式可以使軟件更易修改和維護(hù)。根據(jù)定制化的特點(動態(tài)地添加產(chǎn)品特性,而且可以隨時撤銷),裝飾者模式可以更好幫助我們實現(xiàn)產(chǎn)品定制。

1 裝飾者模式簡介

設(shè)計模式是針對某一類問題的最佳解決方案,而且已經(jīng)被成功應(yīng)用于許多系統(tǒng)的設(shè)計中,它解決了在某種特定情景中重復(fù)發(fā)生的某個問題[4]。20 世紀(jì)90 年代初,Gamma、Helm、Johnson 和Vlissides 等人將建筑領(lǐng)域的模式思想引入到軟件開發(fā)中,提出了注明的GOF23種設(shè)計模式,裝飾者模式即屬于其中之一[5]。

裝飾者模式可以動態(tài)地給一個對象增加職責(zé)。就擴(kuò)展對象功能來說,裝飾者模式比生成子類更為靈活。

裝飾者模式適用于以下3種情況:

(1)在不影響其他對象的情況下,以動態(tài)、透明的方式給單個對象添加職責(zé)。

(2)處理那些可以撤銷的職責(zé)。

(3)當(dāng)不能采用生成子類的方法進(jìn)行擴(kuò)充時。一種情況是,可能有大量獨立的擴(kuò)展,為支持每一種組合將產(chǎn)生大量的子類,使得子類數(shù)目呈爆炸性增長。另一種情況可能是因為類定義被隱藏,或類定義不能用于生成子類[6]。

裝飾者模式的類圖,如圖1所示:

圖1 裝飾者模式的類圖

·Component:定義一個對象接口,可以給這些對象動態(tài)地添加職責(zé)。

·ConcreteComponent:定義一個對象,可以給這個對象添加一些職責(zé)。

·Decorator:維持一個指向Component對象的指針,并定義一個與Component接口一致的接口。

·ConcreteDecorator:向組件添加職責(zé)。

Decorator模式的工作原理:

可以創(chuàng)建始于Decorator對象(負(fù)責(zé)新功能的對象)終于原對象的一個對象“鏈”。

每條鏈都始于一個Component對象。每個Decorator對象后面都跟著另一個Decorator對象或原ConcreteComponent對象。對象鏈總是終于一個ConcreteComponent對象。例如在圖1中,ConcreteDecoratorB對象執(zhí)行其operation方法,然后調(diào)用Decorator類的Operation方法。這又將調(diào)用ConcreteDecoratorB對象之后的Component對象的Operation方法。[5]

2 裝飾者模式在電子商務(wù)定制化系統(tǒng)設(shè)計中的應(yīng)用

2.1 問題的提出

現(xiàn)在流行的定制化方式可分為兩種。一種是提供簡單的個性化定制,比如iPad mini訂購時背面的刻字,比如購買手機(jī)時外殼的顏色和樣式等,另一種則是像 Nike、Sony這種提供對某個系列的產(chǎn)品的各個部分的定制。這兩種定制化方式都存在著明顯的不足,第一種方式可以給用戶帶來一定的個性化元素,但僅僅是外觀上的部分改變,而且變化非常有限。第二種方式雖然可以提供幾乎完全的產(chǎn)品定制,但定制方式幾乎一成不變,不夠靈活。例如

Nike官網(wǎng)提供的Nikeid專屬定制服務(wù),用戶可以選擇鞋面、鞋底的樣式及顏色,但可以進(jìn)行定制的部分是由廠商決定的,如果用戶的需求發(fā)生了改變,例如需要增加對鞋面標(biāo)志的定制,或者增加鞋面可選的樣式,滿足需求的代價就有可能是修改整個系統(tǒng)。

所以說現(xiàn)有的定制化模式缺少可拓展性。

用戶的需求可能是經(jīng)常變化的,市場需要的是一種更為靈活多變的定制化解決方案,定制的內(nèi)容可以隨用戶需求的變化增加或減少,這就需要應(yīng)用到裝飾者模式,通過動態(tài)的增加或減少某個對象的職責(zé)實現(xiàn)靈活的產(chǎn)品定制化服務(wù)。

2.2 應(yīng)用示例

假設(shè)某筆記本商需要向顧客提供定制服務(wù),需要一套自動化的定制系統(tǒng)。筆記本有5個部分可以進(jìn)行定制:Cpu、內(nèi)存、外殼、硬盤、顯卡。

2.2.1 用繼承的方式來實現(xiàn):

提出分析系統(tǒng)的需求后,可以設(shè)計出如下的類圖,如圖2所示:

圖2 應(yīng)用繼承的方式設(shè)計的定制系統(tǒng)的類圖

在圖2中,NoteBook類是所有筆記本的基類,所有種類的筆記本都是該類的子類。Part類是表示筆記本配件的抽象類。Cpu類,Ram類,Case類,Drive類,Graphics類都是其子類。

在基類里包含5個變量,組合了Cpu,Ram,Case,Drive,Graphics5個類的對象,每個變量有相應(yīng)的Setter()方法可以設(shè)置其值。

雖然這看起來是個不錯的設(shè)計方式,但是再從應(yīng)對變化的角度來推敲這個設(shè)計,對一個筆記本定制系統(tǒng)來說,最頻繁的變化就是配件可選配置的變化。例如,原先只允許定制筆記本外殼的整體顏色,現(xiàn)在需要對筆記本A面,B面,以及側(cè)邊的樣式都進(jìn)行定制,這樣就要修改Case類的代碼,為其添加屬性和方法;或者需要增加對筆記本鍵盤的定制,我們就只能修改基類NoteBook類的代碼,增加一個Keyboard屬性。這種從代碼的層次來應(yīng)對變化的方式無疑是很糟糕的。完全不符合“對擴(kuò)展開發(fā),對修改關(guān)閉”設(shè)計原則。

在分析了用繼承的缺點之后,可以看出現(xiàn)在需要一種支持在可定制配件總類發(fā)生變化或配件可選配置發(fā)生變化而不需要修改已有代碼的設(shè)計。于是,我們需要用到裝飾者模式。

2.2.2 應(yīng)用裝飾者模式

可以把定制的過程想象成一個筆記本組裝的過程,每用一個裝飾者來裝飾筆記本對象就相當(dāng)于為筆記本添加一個配件。簡單的類圖如圖3所示:

圖3 應(yīng)用裝飾者模式設(shè)計的定制系統(tǒng)的類圖

Notebook類是一個筆記本抽象類,代表裝飾者模式中的抽象組件(Component),Note1、Note2、是筆記本的兩個系列,每個系列都是Notebook類的一個子類(實際可能有很多個系列),代表具體組件(ConcreteComponent)。Decorator類也是Notebook類的一個子類,是一個抽象類,代表抽象裝飾者(Decorator)。Cpu、Ram、Case、Drive、Graphics,是Decorator類的非抽象子類,代表具體裝飾(ConcreteDecorator),即裝飾者。

假設(shè)每個部分都有兩個可選配置:

Cpu:Intel 酷睿i5 4200U、Intel 酷睿i7 4500U。

內(nèi)存:4GB DDR3 1600 MHz、8GB DDR3 1600 MHz。

外殼:銀白色、紅黑色。

硬盤:500GB 5400轉(zhuǎn)、1TB 7200轉(zhuǎn)。

顯卡:NVIDIA GeForce GT 710M、NVIDIA GeForce GT 720M 。因此,每個部分不只用一個裝飾者,每種配置應(yīng)對應(yīng)一個裝飾者。更詳細(xì)的類圖如圖4所示:

圖4 應(yīng)用裝飾者模式設(shè)計的定制系統(tǒng)的改進(jìn)后的類圖

在NoteBook類用兩個抽象方法簡單的表示筆記本的定制過程:

public abstract class NoteBook

{

public abstract double price();

public abstract void addComponent();//向筆記本添加配件的方法

}

CpuDec1類與Ramdec1類的部分代碼(其他裝飾者的代碼類似):

public class CpuDec1 extends Decorator{

private double price=1000;//cpu價格

public CpuDec1(NoteBook notebook) {

super(notebook);

}

public double price() {

return price+notebook.price();

}

public void addCpu1() {

System.out.print("裝上cpu1,");

KKKKK.; //為筆記本加上CPU的方法

}

public void addComponent() {

addCpu(); //為筆記本加上CPU的方法

notebook.addComponent();

}

}

public class RamDec1 extends Decorator{

private double price=400;//內(nèi)存價格

public RamDec1(NoteBook notebook) {

super(notebook);

}

public double price() {

return price+notebook.price();

}

public void addRam1() {

System.out.print("裝上內(nèi)存1,");

KKKKK.;//為筆記本加上內(nèi)存的方法

}

public void addComponent() {

addRam1();//為筆記本加上內(nèi)存的方法

notebook.addComponent();

}

}

Note1類的部分代碼

private double price=1500; //表示未進(jìn)行組裝的筆記本的基本價格

public double price() {

return price;

}

public void addComponent() {

KKKK;.//表示組裝完成

}

調(diào)用如下代碼:

NoteBook note;

Note= new CpuDec1(new CaseDec1(new Note1()));//此時Note是只裝了外殼和Cpu的筆記本

note=new DriveDec1(new GraphicsDec1(new Ram-Dec1(new CpuDec1(new CaseDec1(new Note1())))));//這時候的note是擁有所有配件的筆記本

note.addComponent();//表示開始組裝筆記本

System.out.println(note.price());//定制后的筆記本的價格

運行的效果大致如圖5所示:

圖5 程序模擬運行效果圖

這樣,如果需要增加外殼的定制樣式,我們不需要修改原Case類的代碼,只需增加一個裝飾者類。

通過以上兩種方式的對比,可以發(fā)現(xiàn),應(yīng)用裝飾者模式可以使整個系統(tǒng)更加靈活,更利于擴(kuò)展;定制化的靈活性越高,越能更好地滿足用戶的需求。但是,如果每個筆記本部件的可選配置有很多種,或者說想要實現(xiàn)每個部件的精細(xì)化定制,就有可能需要用到很多個裝飾者類,而且裝飾鏈過長會影響程序的效率。過度使用裝飾者會讓程序變得過于復(fù)雜,一味追求靈活性而使程序變得復(fù)雜也是不可取的,并不是每個變化都要用裝飾者模式來實現(xiàn),模式的使用要適當(dāng)。

3 總結(jié)

電子商務(wù)的發(fā)展正在邁向定制化,現(xiàn)有的系統(tǒng)不足以滿足用戶需求。開發(fā)者面臨的用戶群越來越龐大,要處理的變化越來越多,系統(tǒng)的功能越來越復(fù)雜。通過應(yīng)用設(shè)計模式可以保證軟件的良好結(jié)構(gòu),提高代碼的復(fù)用性,同時能使系統(tǒng)更易于維護(hù)與修改。

[1] 白東蕊,岳云康,張瑩.電子商務(wù)概論[M].北京:人民郵電出版社,2013.

[2] 為什么定制化才是電子商務(wù)的未來,http://soft.chinabyte.com/498/12775498.shtml.

[3] 大規(guī)模定制化B2C成電子商務(wù)新趨勢[J] .IT經(jīng)理世界.2007年第22期 .

[4] 耿祥義,張躍平.java設(shè)計模式[M].北京:清華大學(xué)出版社,2013.

[5] 沙洛維(AlanShalloway) .設(shè)計模式解析[M].2版. 北京:人民郵電出版社, 2010.

[6] Erich Gamma.設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M]. 北京:機(jī)械工業(yè)出版社,2007.

The Application of Decorator Design Pattern into Electronic Commerce Customization Service

Fang Yajing, Rao Hao, Yu Weihong, Chen Yan
(Dalian Maritime University Transportation and Management School, Dalian116026, China)

With the development of electronic commerce, consumers are not satisfied with the product singleness any more. Needs for electronic commerce customization might be on the rise. It analyses problems existing in the implementation of customization of electronic commerce systems and proposes a method of applying the decorator design pattern into electronic commerce customization system designs. Through an example, the inheritance mechanism and the decorator design pattern are compared and the functions of the decorator design pattern for software scalability and maintainability are illustrated.

Decorator Design Pattern; Customization; Electronic Commerce; System Design

TP311

A

1007-757X(2014)10-0020-03

2014.05.27)

遼寧省精品資源共享課項目資助(363187)

方雅婧(1995-),女,大連海事大學(xué)電子商務(wù)專業(yè),管理學(xué)學(xué)士,研究方向:電子商務(wù),大連,116026饒 浩(1993-),男,大連海事大學(xué)電子商務(wù)專業(yè),管理學(xué)學(xué)士,研究方向:電子商務(wù),大連,116026于衛(wèi)紅(1972-),女,大連海事大學(xué)管理科學(xué)與工程學(xué)科,副教授,博士,研究方向:電子商務(wù)、多Agent理論與應(yīng)用、Android物聯(lián)網(wǎng),大連,116026陳 燕(1952-),女,大連海事大學(xué)管理科學(xué)與工程學(xué)科,教授,博士,研究方向:數(shù)據(jù)挖掘、交通大數(shù)據(jù),大連,116026

猜你喜歡
系統(tǒng)設(shè)計
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
何為設(shè)計的守護(hù)之道?
《豐收的喜悅展示設(shè)計》
流行色(2020年1期)2020-04-28 11:16:38
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
瞞天過海——仿生設(shè)計萌到家
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
主站蜘蛛池模板: 午夜日本永久乱码免费播放片| 亚洲AV无码不卡无码| 国产精品免费久久久久影院无码| 国产精品视频导航| a级高清毛片| 国产一级毛片yw| 国产av无码日韩av无码网站| 一本久道久久综合多人| 亚洲男人天堂2020| 国产成人av一区二区三区| 色哟哟精品无码网站在线播放视频| 99精品热视频这里只有精品7| 青青草国产精品久久久久| 久久久久亚洲精品成人网| 亚洲熟妇AV日韩熟妇在线| 亚洲第一区精品日韩在线播放| 亚洲精品色AV无码看| 亚洲av色吊丝无码| 免费视频在线2021入口| 国产无码精品在线播放| 午夜国产小视频| 四虎国产永久在线观看| 久久这里只有精品66| 国产精品无码久久久久久| 欧美第九页| 激情视频综合网| 国产丝袜无码一区二区视频| 久久成人18免费| 一本综合久久| 久久综合九色综合97婷婷| 亚洲国产欧美自拍| 免费在线看黄网址| 久热中文字幕在线| 亚洲床戏一区| 中文成人无码国产亚洲| 亚洲欧美国产五月天综合| 国产91熟女高潮一区二区| 免费高清a毛片| 国产第一页亚洲| 免费观看成人久久网免费观看| 97se亚洲| 国产成人一二三| 国产一级毛片在线| 亚洲一区色| 91久久青青草原精品国产| 精品国产一区二区三区在线观看| 欧美成人免费一区在线播放| 亚洲第一天堂无码专区| 中文字幕日韩欧美| 国产在线高清一级毛片| 91九色视频网| 91麻豆精品国产91久久久久| AV熟女乱| 亚洲伊人天堂| 国产精品人莉莉成在线播放| 亚洲无线观看| 91麻豆精品视频| 国产精品久久久免费视频| 国产毛片一区| 一级爆乳无码av| 国产在线专区| 亚洲无码精品在线播放| 国产sm重味一区二区三区| 成人午夜精品一级毛片| 另类专区亚洲| 欧美国产日本高清不卡| hezyo加勒比一区二区三区| 亚洲精品777| 伊人激情综合网| 亚洲天堂久久新| 亚洲欧洲一区二区三区| 国产精品男人的天堂| 亚洲成av人无码综合在线观看| 天堂亚洲网| 五月天福利视频| 色欲综合久久中文字幕网| 黄色一级视频欧美| 88av在线| 久久综合丝袜长腿丝袜| 狠狠色成人综合首页| 伊人久综合| 四虎精品黑人视频|