1. 程式人生 > >java策略模式實戰

java策略模式實戰

專案:保險

場景:保險業務中涉及計費的問題,每種保險的計費策略不同,為了更好的程式碼維護,參考大神寫的java策略模式後為選擇了策略模式設計了編碼方案。

涉及表:

產品方案表


業務簡介:

每個保險產品對應不同的方案,每個方案對應不同的計費規則,比如有的按照年齡和性別,有的按照固定價格,有的是公司付款員工免費的,在這裡我將計費的類定義在每個方案中,在業務程式碼中通過spring beanfactory獲取到對應的計費策略bean例項,呼叫通用統一計費方法計算所需費用。

統一計費程式碼如下:


通過上面程式碼可以看出,我定義類介面類IChargingStategySV,介面提供calculate方法,不同的計費規則實現有各自的實現。具體實現如下:

1.按照年齡和性別計費


2.按照固定金額計費


計費就是一個策略,IChargingStrategySV就是抽象策略角色,
BasicPriceChargingStrategySVImpl、AgeAndSexChargingStrategySVImpl就是具體策略角色,封裝的chargingStrategy方法是環境角色。

這樣做帶來什麼好處?

在呼叫側,統一所有產品方案的計費入口,最大強度解耦,後期維護修改計費策略也只需要單獨修改其對應產品實現類。

不知道我的理解是否有誤區···但是方便使用就好。


相關推薦

java策略模式實戰

專案:保險場景:保險業務中涉及計費的問題,每種保險的計費策略不同,為了更好的程式碼維護,參考大神寫的java策略模式後為選擇了策略模式設計了編碼方案。涉及表:產品方案表業務簡介:每個保險產品對應不同的方案,每個方案對應不同的計費規則,比如有的按照年齡和性別,有的按照固定價格,

java策略模式

lec i++ inter auto 情況 抽象 ava sele arr 定義:   是對於算法的包裝,把使用算法的責任和算法本身分隔,委派給不同的對象管理。策略模式通常把一個系列的算法包裝到一系列的策略類裏面,作為一個抽象策略類型的子類型。就是:“準備一組算法,並將每

java8新特性之lamda表示式應用java策略模式

java8的lamda表示式提供了有四種最常用的函式式介面型別:簡單理解函式式介面:就是介面中只有一個抽象方法的介面 1:消費型介面:Consumer  有入參 無返回介面 2:供給型介面:Supplier   無入參 有返回結果 3:function介面:

java策略模式與Spring整合

java設計模式有很多種,其中策略模式算是比較常用的。在專案寫完之後對部分程式碼進行了重構,其中就用到了策略模式(strategy),有了一點體會就記錄一點點 需求:根據不同的渠道程式碼自動生成流水號, 需求很簡單,我們常用的if else if …..el

Java 策略模式在專案中的實際運用

       通常來說,策略模式是指對一系列的演算法定義,並將每一個演算法封裝起來,而且使它們還可以相互替換。策略模式讓演算法獨立於使用它的客戶而獨立變化。        策略模式的優點有:策略模式提供了管理相關的演算法族的辦法、策略模式提供了可以替換繼承關係的辦法、使用策略

Java 策略模式

當我們掌握了Java的語法,當我們瞭解了面向物件的封裝、繼承、多型等特性,當我們可以用Swing、Servlet、JSP技術構建桌面以及Web應用,不意味著我們可以寫出面向物件的程式,不意味著我們可以很好的實現程式碼複用,彈性維護,不意味著我們可以實現在維護、擴充套件基礎上的程式碼複用。一把刀,可以使你制敵於

java 策略模式+簡單工廠模式+反射

一、場景:在實際的專案開發中,我們常常會遇到這樣的問題,實現一個功能有多重方法或策略。比如商場中計算價格的方法:1、商場中沒有活動,那麼收費就是原價;2、商場中有活動,打8折;3、商場中有活動,滿300件100;這三個中計算價格的方法就是三種策略。我們在不適用設計模式的情況下

java - 策略模式、狀態模式、衛語句,避免多重if-else(轉)

前言 當代碼中出現多重if-else語句或者switch語句時。弊端之一:如果這樣的程式碼出現在多處,那麼一旦出現需求變更,就需要把所有地方的if-else或者switch程式碼進行更改,要是遺漏了某一處,那麼程式就會出錯。弊端之二:程式碼邏輯難以理解,可讀性低。   衛語句 if (

Java策略模式+反射動態建立物件

Java的反射機制使得物件可以在執行期間被動態建立。如果一個功能有很多種演算法或者策略,可以使用策略模式,對於不同的條件建立不同的策略,如果策略會拓展,可以利用反射來減少條件判斷。 1.介面 pack

策略模式實戰

策略模式 在策略模式(Strategy Pattern)中,一個類的行為或其演算法可以在執行時更改。這種型別的設計模式屬於行為型模式。 主要解決在有多種演算法相似的情況下,使用 if...else 所帶來的複雜和難以維護。 策略模式的定義網上很多文章都有詳細的說明。這次很巧,我在專案中也遇到一個需要很多if.

重學 Java 設計模式實戰策略模式「模擬多種營銷型別優惠券,折扣金額計算策略場景」

![](https://img-blog.csdnimg.cn/20200705162835805.png) 作者:小傅哥 部落格:[https://bugstack.cn](https://bugstack.cn) - `原創系列專題文章` >沉澱、分享、成長,讓自己和他人都能有所收穫!

Java多線程編程模式實戰指南(三):Two-phase Termination模式

增加 row throws mgr 額外 finally join table 還需 停止線程是一個目標簡單而實現卻不那麽簡單的任務。首先,Java沒有提供直接的API用於停止線程。此外,停止線程時還有一些額外的細節需要考慮,如待停止的線程處於阻塞(等待鎖)或者等待狀態(等

java設計模式】【行為模式Behavioral Pattern】策略模式Strategy Pattern

java sys algorithm stat 設計模式 log sets ace 行為模式 1 package com.tn.策略模式; 2 3 public class Client { 4 private Strategy strategy; 5

java項目實戰】代理模式(Proxy Pattern),靜態代理 VS 動態代理

自己 text 好的 trace use 代理 分類 plproxy this 這篇博文,我們主要以類圖和代碼的形式來對照學習一下靜態代理和動態代理。重點解析各自的優缺點。 定義 代理模式(Proxy Pattern)是對象的結構型模式,代理模

java設計模式(六)策略模式

() pan win with blog trac java設計模式 ring ide   策略模式定義了一系列的算法,並將每一個算法封裝起來,而且使它們可以相互替換,讓算法獨立於使用它的客戶而獨立變化,具體應用場景如第三方支付對接不同銀行的算法。   要點:1)抽象策略角

Java 設計模式學習筆記1——策略模式(Duck例子)

利用 實例化 top 而是 實現 學習筆記 left ng- 多個 0、假設現有工程(Duck)中遇到為類添加功能的問題,如何設計類添加新的功能? 1、利用繼承提供的Duck(鴨子)的行為會導致哪些缺點? (1)代碼在多個子類中重復 (2)很多男知道所有鴨子的全部行為

JAVA模式》之策略模式

tcc ie9 wmi cfb jin uem col sga pid 策略模式屬於對象的行為模式。其用意是針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶端的情況下發生變化。 策略模式的結構   策略

java設計模式策略模式總結

客戶端 出場 cnblogs ava java設計 bsp image 需要 com 策略模式的定義:(定義截自http://www.cnblogs.com/whgk/p/6087064.html) 1、策略模式定義了算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓算

Java 設計模式策略模式

ember edm 等級 dia span private edi concrete tin   在閻宏博士的《JAVA與模式》一書中開頭是這樣描述策略(Strategy)模式的:   策略模式屬於對象的行為模式。其用意是針對一組算法,將每一個算法封裝到具有共同接口的獨立的

Java設計模式策略模式

pattern 管理 父類 interface face 缺點 this err 相互 策略模式屬於對象的行為模式,策略模式定義了一系列的算法,並將每一個算法封裝起來,而且使它們還可以相互替換,策略模式讓算法獨立於使用它的客戶而獨立變化。策略模式使這些算法在客