代码之美~利用构造方法实现模块的解耦
解耦,不仅只是对程序的扩展性而言,它可能还是你使用你的程序从一个层面向另一个层面提高的基础,请认真对待这个词语“解耦”。
我相信,它将会成为与“SOA”,“分布式”,“云计算”,“KV存储”,“高并发”一样的热门的东西,我确信这点。以后,我将会继续关注这个词语“解耦”。
今天主要是讲”代码之美“的一个话题,利用构造方法使你的对象进行一个可供注入的接口,这就是IOC里面注入的一种方式,即”构造器注入“。
1 /// <summary> 2 /// 统一实体 3 /// </summary> 4 public class EntityBase 5 { 6 7 } 8 /// <summary> 9 /// 统一操作 10 /// </summary> 11 public interface IRepository 12 { 13 void Insert(EntityBase entity); 14 } 15 /// <summary> 16 /// 用户操作实现 17 /// </summary> 18 public class UserRepository : IRepository 19 { 20 #region IRepository 成员 21 22 public void Insert(EntityBase entity) 23 { 24 throw new NotImplementedException(); 25 } 26 27 #endregion 28 }
而在构造方法去使用它的时候,一般代码是这样:
1 public abstract class IndexFileBase 2 { 3 IRepository _iRepository; 4 public IndexFileBase(IRepository iRepository) 5 { 6 _iRepository = iRepository; 7 } 8 9 /// <summary> 10 /// 根据实现IRepository接口的不同,Insert逻辑也是多样的 11 /// </summary> 12 /// <param name="entity"></param> 13 public void Insert(EntityBase entity) 14 { 15 this._iRepository.Insert(entity); 16 }
上面的代码,很好的实现了new对象的松耦合,这使得它具有通用的特性,一般我们在设计通用功能时,经理使用这样方式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示