首页 > 其他分享 >策略模式

策略模式

时间:2023-08-20 14:56:39浏览次数:27  
标签:Note 策略 int 模式 content notifyType notify func

package main

import (
	"fmt"
)

const (
	NoteType      = 0
	TellphoneType = 1
)

type MessageNotify interface {
	support(notifyType int) bool
	notify(content string)
}

type Note struct {
}

func (n Note) support(notifyType int) bool {
	return notifyType == NoteType
}

func (n Note) notify(content string) {
	fmt.Printf("notify content: %s by note", content)
}

type Tellphone struct {
}

func (t Tellphone) support(notifyType int) bool {
	return notifyType == TellphoneType
}

func (t Tellphone) notify(content string) {
	fmt.Printf("notify content: %s by tellphone", content)
}

func sendMessage(notifyType int, content string, senders []MessageNotify) {
	for _, sender := range senders {
		if sender.support(notifyType) {
			sender.notify(content)
		}
	}
}

func main() {
	var n Note
	var t Tellphone
	senders := []MessageNotify{n, t}
	sendMessage(1, "ok", senders)
}

输出

notify content: ok by tellphone

参考资料

https://juejin.cn/post/7183349759569035324#heading-23

标签:Note,策略,int,模式,content,notifyType,notify,func
From: https://www.cnblogs.com/WJQ2017/p/17643979.html

相关文章

  • cpu 3 模式
    参考blog按照CPU功能升级迭代的顺序,CPU的工作模式有实模式、保护模式、长模式。他们的主要区别是寻址方式和指令权限。下文以x86_64为例实模式实模式寄存器每个16bit大小,可以分成H和L两个。下图的右半边的寄存器。实模式寻址寻址范围8086cpu的地址总线有......
  • 设计模式分类
    博客地址:https://www.cnblogs.com/zylyehuo/......
  • Linux网络编程(epoll的ET模式和LT模式)
    (文章目录)前言本篇文章主要来讲解epoll的ET模式和LT模式,epoll中有两种模式可以选择一种是ET模式(边缘触发模式),另一种是LT模式(水平触发模式)一、ET模式和LT模式概念讲解1.水平触发模式(LT,Level-Triggered)在水平触发模式下,当一个文件描述符上的I/O事件就绪时,epoll会立即通知......
  • 设计模式-单例模式
    饿汉式/***饿汉式,类加载的时候就会初始化**问题:*1.通过反射可以破坏单例*2.通过反序列化破坏单例*3.通过Unsafe破坏单例,无法解决**@author:optimjie*@date:2023-08-1921:37*/publicclassSingleton1{privateSingleton1()......
  • 正则表达式:贪婪与非贪婪模式
    正则中的三种模式,贪婪匹配、非贪婪匹配和独占模式。在这6种元字符中,我们可以用{m,n}来表示(*)(+)(?)这3种元字符:贪婪模式,简单说就是尽可能进行最长匹配。非贪婪模式呢,则会尽可能进行最短匹配。正是这两种模式产生了不同的匹配结果。贪婪匹配(Greedy)在正则中,表示次数的量词默认是贪......
  • 适配器模式
    将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。参考:https://baike.baidu.com/item/%E9%80%82%E9%85%8D%E5%99%A8%E6%A8%A1%E5%BC%8F/10218946?fr=ge_ala......
  • 【JMeter】常用线程组设置策略
    常用线程组设置策略目录常用线程组设置策略一、前言二、单场景基准测试1.介绍2.线程组设计3.测试结果三、单场景并发测试1.介绍2.线程组设计3.测试结果四、单场景容量/爬坡测试1.介绍2.线程组设计3.测试结果五、混合场景容量/并发测试1.介绍六、稳定性测试1.介绍2.线程组设计3.测......
  • 【补充】Python中实现单例模式的六种常见方法
    【补充】Python中实现单例模式的六种常见方法【1】类属性:classSingleton:instance=None@classmethoddefgetInstance(cls):ifcls.instanceisNone:cls.instance=Singleton()returncls.instance使用类属性保存实......
  • 【补充】软件开发模式对比(瀑布、迭代、螺旋、敏捷)
    【补充】软件开发模式对比(瀑布、迭代、螺旋、敏捷)【1】瀑布模式(WaterfallModel):介绍:瀑布模式是一种线性的开发模式,各个阶段按顺序依次执行,每个阶段严格依赖前一阶段的输出。开发过程划分为需求分析、系统设计、编码、测试和运维等阶段。每个阶段的结果都在下一个阶段开始......
  • 设计模式串讲
    BehavioralDesignPatterns行为模式行为模式负责对象之间的高效沟通和职责委派,这些模式刻画了运行时难以跟踪的复杂控制流,从而把开发者的注意力从控制流转移到对象间的联系方式上。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。行为类模式使用继承机制在类间分派......