當前位置:首頁 » 網頁前端 » 前端彈幕用什麼設計模式
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端彈幕用什麼設計模式

發布時間: 2023-01-05 06:00:03

前端設計模式之責任鏈模式

責任鏈模式

什麼是責任鏈模式

責任鏈(Chain of Responsibility)模式的定義:為了避免請求發送者與多個請求處理者耦合在一起,將所有請求的處理者通過前一對象記住其下一個對象的引用而連成一條鏈;當有請求發生時,可將請求沿著這條鏈傳遞,直到有對象處理它為止。(此處引自 gof 設計模式)

在責任鏈模式中,客戶只需要將請求發送到責任鏈上即可,無須關心請求的處理細節和請求的傳遞過程,所以責任鏈將請求的發送者和請求的處理者解耦了。

責任鏈模式是一種對象行為型模式,其主要優點如下:

1.降低了對象之間的耦合度。該模式使得一個對象無須知道到底是哪一個對象處理其請求以及鏈的結構,發送者和接收者也無須擁有對方的明確信息。

2.增強了系統的可擴展性。可以根據需要增加新的請求處理類,滿足開閉原則。

3.增強了給對象指派職責的靈活性。當工作流程發生變化,可以動態地改變鏈內的成員或者調動它們的次序,也可動態地新增或者刪除責任。

4.責任鏈簡化了對象之間的連接。每個對象只需保持一個指向其後繼者的引用,不需保持其他所有處理者的引用,這避免了使用眾多的 if 或者 if···else 語句。

5.責任分擔。每個類只需要處理自己該處理的工作,不該處理的傳遞給下一個對象完成,明確各類的責任范圍,符合類的單一職責原則。

其主要缺點如下。

1.不能保證每個請求一定被處理。由於一個請求沒有明確的接收者,所以不能保證它一定會被處理,該請求可能一直傳到鏈的末端都得不到處理。

2.對比較長的職責鏈,請求的處理可能涉及多個處理對象,系統性能將受到一定影響。

3.職責鏈建立的合理性要靠客戶端來保證,增加了客戶端的復雜性,可能會由於職責鏈的錯誤設置而導致系統出錯,如可能會造成循環調用。

其他說明
責任鏈模式,總的一個核心就是請求者不必知道是誰哪個節點對象處理的請求,由於處理請求的可以在不同對象下處理,所以請求者跟接受者是解耦的。

純的責任鏈:要求請求在這些對象鏈中 必須被處理 ,而且一個節點處理對象,要麼只處理請求,要麼把請求轉發給下個節點對象處理;

不純的責任鏈:要求在責任鏈里 **不一定會有處理結構 **,而且一個節點對象,即可以處理部分請求,並把請求再轉發下個節點處理;

javascript 中介者模式
責任鏈模式對前端開發來說可能有點陌生,但是看了前面的描述又感覺似曾相識

實際上 express、rex 里的 middleware 都可以簡單理解為責任鏈模式的運用

要實現中間件模式,最重要的實現細節是:

1.可以通過調用 use() 函數來注冊新的中間件

2.當接收到需要處理的新數據時,注冊的中間件在執行流程中被依次調用。每個中間件都接受上一個中間件的執行結果作為輸入值

3.每個中間件都可以停止數據的進一步處理,只需要簡單地不調用它的回調函數或者將錯誤傳遞給回調函數。當發生錯誤時,通常會觸發執行另一個專門處理錯誤的中間件

項目實戰
通用中間件開發

通用中間件使用 ajax

如上我們在發送請求之前加入了類型轉換、數據校驗,將數據的業務處理使用中間件模式剝離,使得處理過程模塊化,維護性提升。

中間件升級-事件回調

每個中間件的過程都是不可控制的,全部都交由中間類去統一調用,我們可以加入事件回調,方便我們在中間件處理過程中擁有額外的邏輯能力

將上述的使用方法再改造一下,方便實際業務中使用

上述的項目實例是採用 ajax 來演示,實際通用的中間件類,可以在業務中將一些 **流程化執行的任務 **拆分出來,例如表單驗證、多重條件判斷等等

多種條件判斷

將流程化執行的多種條件判斷通過中間件解耦,可以使得條件判斷方法更加清晰。一般當你需要使用中介者來改造業務邏輯的時候,前端的項目確實有點復雜了。

現在STAR現在是在騰訊課堂裡面分享自己的經驗,感謝興趣的朋友可以加Q群:1146649671

中獲取STAR在騰訊課堂分享的鏈接,還可以獲取學習資料 面試文檔等

Ⅱ web前端開發的主要做什麼

學習前端出來社會上就是大概率從事寫代碼工作的了,寫代碼這件事情我們是相當專業的,下面從幾個典型的應用場景給大家分析一下!
一、前端開發應用場景
1、企業官方網站的開發與維護
這個應該是最簡單的了,基本上是純靜態頁面的展示,就算有交互模塊,應該也是比較簡單的那種。
2、門戶類型網站的開發與維護
例如像搜狐一樣的門戶網站,相對來說也不難,這種網站一般分成很多個模塊,每個模塊的展現結構是非常類似的。
如何做到可復用性強,對產品需求變更迭代時更加友好,那就很考驗開發人員前端三大語言的設計模式了。
3、電商網站
例如京東和淘寶,裡面不僅有對用戶友好的展現方式,合乎邏輯的交互方式,還會涉及到網站、商品的色彩設計、排版設計、交互設計,雖然可能都由設計師來出方案,但是前端開發同學可以從中學到很多東西。
此外,除了單純的展現,你需要考慮更多的東西了。
例如,不同端的字體展現,響應式布局,圖片大小,靜態資源緩存,CDN部署,Ajax動態數據交互。這些還都是偏純展現的。
還會有涉及到個人信息填寫、支付款項、密碼輸入等等,會涉及到一系列的前端安全問題,這部分也是很鍛煉人的。
4、後台管理系統
一般這個是給內部人員使用的,所以可以不用考慮太多的兼容性,直接要求統一使用谷歌瀏覽器或者火狐。
5、H5的活動營銷頁、紅包落地頁、明星投票頁等等一系列與營銷活動相關的移動端頁面。
這些需要你的CSS功底非常扎實,常常要寫一些動態效果、動畫效果,越生動越吸引用戶參與。
6、移動端視頻播放頁面
最近短視頻崛起,但是很多短視頻App中的頁面是Web前端頁面,這樣做的原因是App過審麻煩且時間周期長,業務需要快速迭代和修復的情況下,前端責無旁貸。
那麼這時候考驗的是你對視頻的操作能力,對流式播放技術和能力的掌握。此外,視頻掛件、貼紙、彈幕、互動、美顏、變老挑戰等等,都是現在短視頻必備的能力。
7、微信小程序
噢,不,應該是小程序。微信、支付寶、網路等大企業,先後推出了小程序,當然身為前端開發的我們是必須掌握的一門技巧,雖然不是新的語言,但代碼組織方式、調試方式、底層原理,也是值得關注和學習。
8、造輪子寫工具、寫框架,搭建基礎設施
公司逐漸發展壯大以後,會面臨一個問題,那就是如何將前端基礎設施做起來。基礎設施對前端的工程搭建與發展來說,太重要了。
希望以上的回答能幫到大家。

Ⅲ JS常用設計模式(MVC、MVP、MVVM及其他設計模式)

一、MVC

MVC模式的意思是,軟體可以分成三個部分。

視圖(View):用戶界面。

控制器(Controller):業務邏輯

模型(Model):數據保存

各部分之間的通信方式如下。

View 傳送指令到 Controller

Controller 完成業務邏輯後,要求 Model 改變狀態

Model 將新的數據發送到 View,用戶得到反饋

所有通信都是單向的。

二、互動模式

接受用戶指令時,MVC 可以分成兩種方式。一種是通過 View 接受指令,傳遞給 Controller。

另一種是直接通過controller接受指令。

三、實例:Backbone

實際項目往往採用更靈活的方式,以 Backbone.js 為例。

1. 用戶可以向 View 發送指令(DOM 事件),再由 View 直接要求 Model 改變狀態。

2. 用戶也可以直接向 Controller 發送指令(改變 URL 觸發 hashChange 事件),再由 Controller 發送給 View。

3. Controller 非常薄,只起到路由的作用,而 View 非常厚,業務邏輯都部署在 View。所以,Backbone 索性取消了 Controller,只保留一個 Router(路由器) 。

四、MVP

MVP 模式將 Controller 改名為 Presenter,同時改變了通信方向。

1. 各部分之間的通信,都是雙向的。

2. View 與 Model 不發生聯系,都通過 Presenter 傳遞。

3. View 非常薄,不部署任何業務邏輯,稱為"被動視圖"(Passive View),即沒有任何主動性,而 Presenter非常厚,所有邏輯都部署在那裡。

五、MVVM

MVVM 模式將 Presenter 改名為 ViewModel,基本上與 MVP 模式完全一致。

唯一的區別是,它採用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。 Angular 和 Ember 都採用這種模式。

1、js工廠模式

說明:

在函數中定義對象,並定義對象的各種屬性,雖然屬性可以為方法,但是建議將屬性為方法的屬性定義到函數之外,這樣可以避免重復創建該方法。

引用該對象的時候,這里使用的是 var x = Parent()而不是 var x = new object(); 因為後者可能會出現很多問題(前者也成為工廠經典方式,後者稱之為混合工廠方式),不推薦使用new的方式使用該對象。

在函數的最後返回該對象。

不推薦使用這種方式創建對象,但應該了解。  

2、js構造函數模式

說明:

與工廠方式相比,使用構造函數方式創建對象無需在函數內部創建對象,而使用this指代,並而函數無需明確return。

同工廠模式一樣,雖然屬性的值可以為方法,仍建議將該方法定義在函數之外。

同樣的,不推薦使用這種方式創建對象,但仍需了解。

3、js原型模式

說明:

函數中不對屬性進行定義。

利用prototype屬性對屬性進行定義。

同樣的額,不推薦使用這樣的方式創建對象。

4、構造函數+原型的js混合模式(推薦)

說明:

該模式是指混合搭配使用構造函數和原型方式。

將所有的屬性,不是方法的定義在函數中(構造函數的方式),將所有屬性值為方法的利用prototype在函數之外定義(原型方式)。

推薦使用這樣的方式創建對象,這樣有好處。

5、構造函數+原型的動態原型模式(推薦)

說明:

動態原型方式可以理解為混合構造函數,原型方式的一個特例。

該模式中,屬性為方法的屬性直接在函數中進行了定義,但是因為

if(typeof Parent.lev == "undefined"){

          Parent.prototype.lev = function(){

            return this.name;

          }

   Parent.lev = true;

    } 

從而保證創建該對象的實例時,屬性的方法不會被重復的創建。

Ⅳ 開發中用到哪些設計模式 用在什麼場合

一共23種設計模式!

引用《軟體秘笈-設計模式那點事》書籍:

按照目的來分,設計模式可以分為創建型模式、結構型模式和行為型模式。
創建型模式用來處理對象的創建過程;結構型模式用來處理類或者對象的組合;行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述。

創建型模式用來處理對象的創建過程,主要包含以下5種設計模式:
 工廠方法模式(Factory Method Pattern)
 抽象工廠模式(Abstract Factory Pattern)
 建造者模式(Builder Pattern)
 原型模式(Prototype Pattern)
 單例模式(Singleton Pattern)

結構型模式用來處理類或者對象的組合,主要包含以下7種設計模式:
 適配器模式(Adapter Pattern)
 橋接模式(Bridge Pattern)
 組合模式(Composite Pattern)
 裝飾者模式(Decorator Pattern)
 外觀模式(Facade Pattern)
 享元模式(Flyweight Pattern)
 代理模式(Proxy Pattern)

行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述,主要包含以下11種設計模式:
 責任鏈模式(Chain of Responsibility Pattern)
 命令模式(Command Pattern)
 解釋器模式(Interpreter Pattern)
 迭代器模式(Iterator Pattern)
 中介者模式(Mediator Pattern)
 備忘錄模式(Memento Pattern)
 觀察者模式(Observer Pattern)
 狀態模式(State Pattern)
 策略模式(Strategy Pattern)
 模板方法模式(Template Method Pattern)
訪問者模式(Visitor Pattern)

詳情請參考書籍《軟體秘笈:設計模式那點事》,該書中詳細講解了各種設計模式的使用場合,裡面講解設計模式例子也很生動,容易理解,還有JDK中設計模式應用情況,看了收獲挺大的!好東西大家一起分享!
祝你早日學會設計模式!

Ⅳ web前端開發的主要做什麼

前端開發是創建Web頁面或app等前端界面呈現給用戶的過程,通過HTML,CSS及JavaScript以及衍生出來的各種技術、框架、解決方案,來實現互聯網產品的用戶界面交互。Web前端的學習起來相對簡單,未來的發展前景也是非常不錯的。

web全棧工程師5.0課程包括:

①計算機基礎以及PS基礎

②前端開發基礎(HTML5開發、JavaScript基礎到高級、jQuery網頁特效、Bootstrap框架)

③移動開發

④前端高級開發(ECMAScript6、Veu.js框架開發、webpack、前端頁面優化、React框架開發、AngularJS 2.0框架開發等)

⑤小程序開發

⑥全棧開發(MySQL資料庫、Python編程語言、Django框架等)

⑦就業拓展(網站SEO與前端安全技術)

互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。

想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。

祝你學有所成,望採納。

Ⅵ 什麼是MVC設計模式,為什麼使用MVC

MVC(Model-View-Controller)把系統的組成分解為M(模型)、 V(視圖)、C(控制器)三種部件。視圖表示數據在屏幕上的顯示。控制器提供處理過程式控制制,它在模型和視圖之間起連接作用。控制器本身不輸出任何信息和做任何處理,它只負責把用戶的請求轉成針對Model的操作,和調用相應的視圖來顯示Model處理後的數據。
用戶界面邏輯的更改往往比業務邏輯頻繁,尤其是在基於Web的應用程序中。例如,可能添加新的用戶界面頁,或者可能完全打亂現有的頁面布局。對顯示的更改,盡可能地不要影響到數據和業務邏輯。

目前大部分Web應用都是將數據代碼和表示混在一起。經驗比較豐富的開發者會將數據從表示層分離開來,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗試。MVC從根本上強制性的將它們分開。盡管構造MVC應用需要一些額外的工作,但它帶來的好處是無庸質疑的

Ⅶ 設計一個聊天室程序能用到23種設計模式里的哪些

註解⑴寥落:寂寞冷落。

Ⅷ 請列舉一些您用到過的設計模式以及在什麼情況下使用該模式

1.原型模式(Prototype Pattern):用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。
使用場景:一個對象需要提供給其他對象訪問,而且各個調用者可能都需要修改其值時,可以考慮使用原型模式拷貝多個對象供調用者使用

2.組合模式(Composite Pattern)也叫合成模式:將對象組合成樹形結構以表示"部分-整體"的層次結構,使得用戶對單個對象和組合對象的使用具有一致性。
使用場景:組合模式在項目中到處都有,比如現在的頁面結構一般都是上下結構,上面放系統的Logo,下邊分為兩部分:左邊是導航菜單,右邊是展示區,左邊的導航菜單一般都是樹形的結構,比較清晰,有非常多的JavaScript源碼實現了類似的樹形菜單,大家可以到網上搜索一把。

等等。

如果你想了解每一種模式的使用場景,可以看看《設計模式之禪》,裡面介紹了23種設計模式分別的使用方法,還有設計模式混搭和PK,對於想了解設計模式的人來說是比較不錯的參考手冊

Ⅸ java EE在web開發中常用的設計模式有哪些好處是什麼

當然是23種設計模式了
1、Singleton,單例模式:保證一個類只有一個實例,並提供一個訪問它的全局訪問點
2、Abstract Factory,抽象工廠:提供一個創建一系列相關或相互依賴對象的介面,而無須指定它們的具體類。
3、Factory Method,工廠方法:定義一個用於創建對象的介面,讓子類決定實例化哪一個類,Factory Method使一個類的實例化延遲到了子類。
4、Builder,建造模式:將一個復雜對象的構建與他的表示相分離,使得同樣的構建過程可以創建不同的表示。
5、Prototype,原型模式:用原型實例指定創建對象的種類,並且通過拷貝這些原型來創建新的對象。
行為型有:
6、Iterator,迭代器模式:提供一個方法順序訪問一個聚合對象的各個元素,而又不需要暴露該對象的內部表示。
7、Observer,觀察者模式:定義對象間一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知自動更新。
8、Template Method,模板方法:定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中,TemplateMethod使得子類可以不改變一個演算法的結構即可以重定義該演算法得某些特定步驟。
9、Command,命令模式:將一個請求封裝為一個對象,從而使你可以用不同的請求對客戶進行參數化,對請求排隊和記錄請求日誌,以及支持可撤銷的操作。
10、State,狀態模式:允許對象在其內部狀態改變時改變他的行為。對象看起來似乎改變了他的類。
11、Strategy,策略模式:定義一系列的演算法,把他們一個個封裝起來,並使他們可以互相替換,本模式使得演算法可以獨立於使用它們的客戶。
12、China of Responsibility,職責鏈模式:使多個對象都有機會處理請求,從而避免請求的送發者和接收者之間的耦合關系
13、Mediator,中介者模式:用一個中介對象封裝一些列的對象交互。
14、Visitor,訪問者模式:表示一個作用於某對象結構中的各元素的操作,它使你可以在不改變各元素類的前提下定義作用於這個元素的新操作。
15、Interpreter,解釋器模式:給定一個語言,定義他的文法的一個表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。
16、Memento,備忘錄模式:在不破壞對象的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。
結構型有:
17、Composite,組合模式:將對象組合成樹形結構以表示部分整體的關系,Composite使得用戶對單個對象和組合對象的使用具有一致性。
18、Facade,外觀模式:為子系統中的一組介面提供一致的界面,fa?ade提供了一高層介面,這個介面使得子系統更容易使用。
19、Proxy,代理模式:為其他對象提供一種代理以控制對這個對象的訪問
20、Adapter,適配器模式:將一類的介面轉換成客戶希望的另外一個介面,Adapter模式使得原本由於介面不兼容而不能一起工作那些類可以一起工作。
21、Decrator,裝飾模式:動態地給一個對象增加一些額外的職責,就增加的功能來說,Decorator模式相比生成子類更加靈活。
22、Bridge,橋模式:將抽象部分與它的實現部分相分離,使他們可以獨立的變化。
23、Flyweight,享元模式
好處是遵循7大設計原則
1.開閉原則(Open Close Principle)
2.里氏代換原則(Liskov Substitution Principle)
3.依賴倒轉原則(Dependence Inversion Principle)
4.介面隔離原則(Interface Segregation Principle)
5.組合/聚合復用原則
6.迪米特法則(Law Of Demeter)
7.單一職責原則(Single Responsibility Principle)

Ⅹ web前端開發 怎樣實現動態彈幕

跟標題滾動是一個意思,彈幕滾動也是定時器,只不過加了一個高度的賦值