精講策略設計模式

2021-09-21 14:54:00 字數 2394 閱讀 4481

什麼是策略模式

策略模式是對演算法的包裝,是把使用演算法的責任和演算法本身分割開來,委派給不同的物件管理,最終可以實現解決多重if判斷問題。即每種實現即為一種策略

策略模式優缺點

策略模式應用場景

一般用於聚合支付,聚合推送,聚合簡訊等

策略模式架構圖

策略模式環境搭建

pom.xml

springutils

concretestrategy (具體實現角色)

@component

public class alipaystrategy implements paystrategy

}@component

public class xiaomipaystrategy implements paystrategy

}

paycontextservice (上下文)

@restcontroller

public class paycontextservice

// 2.使用paycode查詢

if(paymentchannel==null)

// 3.獲取策略執行的beanid

string strategybeanid = paymentchannel.getstrategybeanid();

// 4.使用strategybeanid獲取對應spring容器bean資訊

paystrategy paystrategy = springutils.getbean(strategybeanid, paystrategy.class);

// 5.執行具體策略演算法

return paystrategy.topayhtml();}}

相關sql語句

drop table if exists `payment_channel`;

create table `payment_channel` (

`id` int(11) not null auto_increment comment 'id',

`channel_name` varchar(32) not null comment '渠道名稱',

`channel_id` varchar(32) not null comment '渠道id',

`strategy_bean_id` varchar(255) default null comment '策略執行beanid',

primary key (`id`,`channel_id`)

) engine=innodb auto_increment=6 default charset=utf8 comment='支付渠道 ';

-- ----------------------------

-- records of payment_channel

-- ----------------------------

insert into `payment_channel` values ('4', '支付寶渠道', 'ali_pay', 'alipaystrategy');

insert into `payment_channel` values ('5', '小公尺支付渠道', 'xiaomi_pay', 'xiaomipaystrategy');

資料庫訪問層

@data

public class paymentchannelentity

@select("\n" +

"select id as id ,channel_name as channelname ,channel_id as channelid,strategy_bean_id as strategybeanid\n" +

"from payment_channel where channel_id=#")

public paymentchannelentity getpaymentchannel(string paycode);

}

啟動類

public static void main(string args) }

測試

localhost:8088/topayhtml?paycode=ali_pay
基於列舉實現策略模式

思想**

設計模式精講

c 實現設計模式 1 設計模式簡介 c 實現設計模式 2 模板方法 c 實現設計模式 3 strategy模式 c 實現設計模式 4 觀察者模式 c 實現設計模式 5 裝飾模式 c 實現設計模式 6 橋模式 c 實現設計模式 7 工廠模式 c 實現設計模式 8 抽象工廠模式 c 實現設計模式 9 原...

設計模式課程 設計模式精講 10 1 外觀模式講解

1 課堂講解 1.1 型別 1.2 定義 1.3 適用場景 1.4 優點 1.5 缺點 1.6 相關聯設計模式對比 1 課堂講解 1.1 型別 型別 結構型 1.2 定義 定義 又叫門面模式,提供了乙個統一的介面,用來訪問子系統中的一群介面 外觀模式定義了乙個高層介面,讓子系統更容易使用 1.3 適...

精講Android設計模式 單例模式

單例的優點 1.只有乙個例項,節省開銷 2.全域性使用方便,同時避免頻繁建立和銷毀 使用單例的注意點 要避免造成 記憶體洩漏 單例不僅要滿足執行緒安全,還要注意防止序列化產生新物件。如果單例實現了serializable介面,就必須加入如下方法 列舉單例不用這麼做,因為jvm能保障這點 privat...