策略模式

        先看下下面的這部分代碼,有一個職業的枚舉,用來確認有哪些職業。在FGO類中,有一個Attack函數,表示不一樣角色進行不一樣的***。
程序員

圖片.png


        初看這段代碼沒有什麼問題,可是隨着職業的增長,還會寫不少的if else語句,這裏就存在兩個問題
ide

        一、每次都得編譯這部分代碼?代碼可複用性?
函數

        二、若是每次進來都是最後一個else分支,那是否是前面的判斷都是無用的?這是否是就致使了程序須要的內存變大了?
學習


帶着這兩個問題,我們來看策略模式的解決辦法spa


首先,我們把每一個人物都是有***屬性的,我們先把這部分抽象出來3d

spacer.gif圖片.png


接着,不一樣職業的人物,就能夠經過繼承,重寫attack的方式,來完成不一樣職業的***方法blog

圖片.png



這樣,我們的策略模式就完成了一大半了,那麼我們怎麼來使用策略模式的代碼呢,繼承

圖片.png


        這就是策略模式的所有內容,這裏有提到工廠方法,後續會對工廠方法進行學習,說明。
圖片


        能夠看到,若是之後有新增的職業時,只須要增長一個該職業的子類,以及修改工廠方法中的部份內容就能夠了。這樣代碼就具備了高可用性,同時也解決了以前的兩個問題。代碼大部分都是穩定的,只有少部分是變化的。
內存

        好了,今天就到這裏。睡覺

我是程序員的頸椎, 歡迎你們一塊兒學習交流QQ羣689930130

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息