1. 程式人生 > 其它 >Java學生管理系統學習筆記

Java學生管理系統學習筆記

 1 package bridging
 2 
 3 import "fmt"
 4 
 5 //橋接模式:分離抽象部分和是實現部分,使得兩部分可以獨立變化
 6 //橋接模式類似於策略模式,區別於策略模式封裝一些列演算法,使得演算法可以相互替換
 7 
 8 //將抽象部分SendMessage()與具體的實現部分Send()分離
 9 
10 //抽象部分:SendMessage
11 type AbstractMessage interface {
12     SendMessage(text, to string)
13 }
14 
15 //實現部分:Send
16 type MessageImplementer interface
{ 17 Send(text, to string) 18 } 19 20 //via sms 21 func ViaSMS() MessageImplementer { 22 return &MessageSMS{} 23 } 24 25 type MessageSMS struct { 26 } 27 28 func (*MessageSMS) Send(text, to string) { 29 fmt.Printf("send %s to %s via SMS", text, to) 30 } 31 32 //via email 33 func ViaEmail() MessageImplementer {
34 return &MessageEmail{} 35 } 36 37 type MessageEmail struct { 38 } 39 40 func (MessageEmail) Send(text, to string) { 41 fmt.Printf("send %s to via Email", text, to) 42 } 43 44 //New commonMessage,method can be SMS or email 45 func NewCommonMessage(method MessageImplementer) *CommonMessage {
46 return &CommonMessage{ 47 method: method, 48 } 49 } 50 51 type CommonMessage struct { 52 method MessageImplementer 53 } 54 55 func (c *CommonMessage) SendMessage(text, to string) { 56 c.method.Send(text, to) 57 } 58 59 //New UrgencyMessage,method can be SMS or email 60 func NewUrgencyMessage(method MessageImplementer) *UrgencyMessage { 61 return &UrgencyMessage{ 62 method: method, 63 } 64 } 65 66 type UrgencyMessage struct { 67 method MessageImplementer 68 } 69 70 func (u *UrgencyMessage) SendMessage(text, to string) { 71 u.method.Send(fmt.Sprintf("[Urgency] %s", text), to) 72 }
 1 /**
 2 * @Author:zhoutao
 3 * @Date:2020/12/12 上午9:32
 4 * @Desc:
 5  */
 6 
 7 package bridging
 8 
 9 func ExampleCommonSMS() {
10     m := NewCommonMessage(ViaSMS())
11     m.SendMessage("sending by sms:have a drink", "boo")
12 }
13 
14 func ExampleCommonEmail() {
15     m := NewCommonMessage(ViaEmail())
16     m.SendMessage("sending by email:have a drink", "boo")
17 }
18 
19 func ExampleUrgencySMS() {
20     m := NewUrgencyMessage(ViaSMS())
21     m.SendMessage("have a drink", "boo")
22 }
23 
24 func ExampleUrgencyEmail() {
25     m := NewUrgencyMessage(ViaEmail())
26     m.SendMessage("have a drink", "boo")
27 }