dede建设网站网页设计师的发展路径

张小明 2026/1/19 19:00:16
dede建设网站,网页设计师的发展路径,音乐网站的音乐怎么做音乐试听,点击器设计模式-控制反转【golang】 听不懂的概念 将程序中对象的创建、依赖管理的控制权#xff0c;从代码内部转移到外部容器/框架 获取mysql数据#xff0c;存入redis package mrimport (fmtlogostesting )type Database int…设计模式-控制反转【golang】听不懂的概念将程序中对象的创建、依赖管理的控制权从代码内部转移到外部容器/框架获取mysql数据存入redispackagemrimport(fmtlogostesting)typeDatabaseinterface{Query(sqlstring)string}typeCacheinterface{Set(key,valuestring)}// Mysql操作typeMySQLDatabasestruct{}func(db*MySQLDatabase)Query(sqlstring)string{returnfmt.Sprintf(MySQL result: %s,sql)}// Pg操作typePgDatabasestruct{}func(db*PgDatabase)Query(sqlstring)string{returnfmt.Sprintf(PgSQL result: %s,sql)}// Redis操作typeRedisCachestruct{}func(c*RedisCache)Set(key,valuestring){fmt.Printf(Redis set: %s %s\n,key,value)}// 业务逻辑funcTestManual(t*testing.T){db:MySQLDatabase{}cache:RedisCache{}// 下面为业务逻辑代码user:db.Query(SELECT * FROM users WHERE id1)cache.Set(user:1,user)// ………………}定义好了查询 mysql、设置 redis 的方法TestManual需要做的事情是查询 mysql 的值存入 redis这时TestManual方法需要依赖两个依赖DatabaseCache当我的业务逻辑代码不变需要更换一下两个依赖时例如我要把mysql切换成PostgreSql时那只能修改我的业务逻辑方法了例如// 业务逻辑funcTestManual(t*testing.T){// db : MySQLDatabase{}db:PgSQLDatabase{}cache:RedisCache{}// 下面为业务逻辑代码user:db.Query(SELECT * FROM users WHERE id1)cache.Set(user:1,user)// ………………}所以我需要把依赖的这部分代码提出来以后换库还是什么的不去动我的业务逻辑方法-TestManual换一种写法添加一个RunUserService叫做管理容器也好方法也好总之是一块儿代码封装packagemrimport(fmtlogostesting)typeDatabaseinterface{Query(sqlstring)string}typeCacheinterface{Set(key,valuestring)}// Mysql操作typeMySQLDatabasestruct{}func(db*MySQLDatabase)Query(sqlstring)string{returnfmt.Sprintf(MySQL result: %s,sql)}// Pg操作typePgSqlDatabasestruct{}func(db*PgSqlDatabase)Query(sqlstring)string{returnfmt.Sprintf(PgSQL result: %s,sql)}// Redis操作typeRedisCachestruct{}func(c*RedisCache)Set(key,valuestring){fmt.Printf(Redis set: %s %s\n,key,value)}// 数据服务操作函数typeDataServiceHandlerfunc(db Database,cache Cache)funcRunUserService(handler DataServiceHandler){// 依赖代码迁移到这里db:MySQLDatabase{}// db : PgSqlDatabase{}cache:RedisCache{}handler(db,cache)}// 业务逻辑funcTestManual(t*testing.T){RunUserService(func(db Database,cache Cache){// 下面为业务逻辑代码user:db.Query(SELECT * FROM users WHERE id1)cache.Set(user:1,user)})}这种体现形式为 闭包回调函数interface 的组合方式我认为其本质还是回调函数通过传递一段预定义代码块在真正执行业务代码时调用栈返回去执行结果再回到调用方这里从而简化调用方的代码量更多的关于依赖注入、控制反转的实现参考 https://blog.csdn.net/qq_37485347/article/details/142203484
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

山东电力建设网站国家工程建设标准化信息网站

贪心算法:像“贪吃蛇”一样,永远只吃眼前的苹果?当你玩贪吃蛇时,你是否会毫不犹豫地冲向最近的那个食物?这种“每一步都选眼前最优”的策略,正是贪心算法的灵魂所在。但它真的能让你通关吗?想象…

张小明 2026/1/17 21:36:59 网站建设

风格 特别的网站上海市建筑业官网

购买即可解锁300+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,别人有的本专栏也有! 文章目录 **YOLOv12图像去雾检测增强:基于FFA-Net的模糊图像目标检测突破性解决方案** **FFA-Net核心模块完整实现** 代码链接与详细流程 YOLOv12图像去雾检测增强…

张小明 2026/1/17 21:36:58 网站建设

阿里巴巴网站建设要多少钱资源专业网站优化排名

Beyond Compare 5密钥生成与激活完全攻略:从技术困境到完美解决方案 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 还在为Beyond Compare 5的授权限制而苦恼?面对功能强…

张小明 2026/1/17 21:37:00 网站建设

网站动态和静态的区别哈尔滨网站建设有限公司

3大核心优势:QMQTT在Qt项目中构建高效物联网通信的完整指南 【免费下载链接】qmqtt MQTT client for Qt 项目地址: https://gitcode.com/gh_mirrors/qm/qmqtt 在物联网应用开发中,你是否经常面临设备通信不稳定、网络连接复杂、数据安全难以保障等…

张小明 2026/1/17 21:36:59 网站建设

固始做网站泰安市最新消息今天

终极开源macOS应用宝库:新手也能轻松掌握的效率神器 【免费下载链接】open-source-mac-os-apps serhii-londar/open-source-mac-os-apps: 是一个收集了众多开源 macOS 应用程序的仓库,这些应用程序涉及到各种领域,例如编程、生产力工具、游戏…

张小明 2026/1/17 21:37:03 网站建设

本地怎么做网站服务器吗学习网站建设网站

AI填色画生成器:5步将照片变成专业数字艺术创作 【免费下载链接】paintbynumbersgenerator Paint by numbers generator 项目地址: https://gitcode.com/gh_mirrors/pa/paintbynumbersgenerator 想要快速将普通照片转化为精美的数字填色画吗?AI填…

张小明 2026/1/17 21:37:03 网站建设