解耦,不仅只是对程序的扩展性而言,它可能还是你使用你的程序从一个层面向另一个层面提高的基础,请认真对待这个词语“解耦”。

我相信,它将会成为与“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对象的松耦合,这使得它具有通用的特性,一般我们在设计通用功能时,经理使用这样方式。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:代码之美~利用构造方法实现模块的解耦,如需转载请自行联系原博主。

代码之美~利用构造方法实现模块的解耦相关推荐

  1. python修改html内容_详解Python利用Beautiful Soup模块修改内容示例代码

    Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python 库.它能够通过你喜欢的转换器实现惯用的文档导航.查找.修改文档的方式.他还能够修改HTML/XML文档的内容.这篇 ...

  2. 利用Python+opencv模块的dnn实现Faster R-CNN(一)

    利用Python+opencv模块的dnn实现Faster R-CNN(一) 开发环境 faster r-cnn学习 -*- coding: utf-8 -*- -*- coding: utf-8 - ...

  3. 利用Instrumentation单元测试模块控制安卓手机进行各项操作(微信)

    本篇讲解的是利用Instrumentation单元测试模块来控制以获取root权限的手机进行操作微信的简单基础讲解,以一个自己写的一个成品Demo(能够跑出想要的结果,但是博客无法上传视频文件所以只能 ...

  4. micropython四位数码管程序代码(YX55759-+4位数码管模块)

    micropython 4位数码管程序代码(YX55759-+4位数码管模块) 成品代码 实验器材&接线 代码思路&控制逻辑 应用 成品代码 话不多说,直接看最后可以直接使用的代码. ...

  5. 利用科大讯飞语音合成模块SDK实现ROS语音交互

    利用科大讯飞语音合成模块SDK实现ROS语音交互 本文内容与CSDN博主「AI Chen」的原创文章相同,可以直接参考原文:https://blog.csdn.net/qq_39400324/arti ...

  6. 代码之美——Doom3源代码赏析2

    http://www.csdn.net/article/2013-01-17/2813778-the-beauty-of-doom3-source-code/2 摘要:Dyad作者.资深C++工程师S ...

  7. 代码之美——Doom3源代码赏析

    摘要:Dyad作者.资深C++工程师Shawn McGrathz在空闲时翻看了Doom3的源代码,发出了这样的惊叹:"这是我见过的最整洁.最优美的代码!""Doom 3的 ...

  8. 墨者学院Tomcat 远程代码执行漏洞利用

    墨者学院Tomcat 远程代码执行漏洞利用 进靶场后界面是这样的,先用bp抓包 发现抓不到包,刷新两下然后放包试试,放包到看到这个界面就可以了,看地址判断有没有抓到包 抓到包之后用PUT传参 这里可以 ...

  9. Hack The Box - Catch 利用let chat API查询信息,Cachet配置泄露漏洞获取ssh登录密码,apk代码注入漏洞利用获取root权限

    Hack The Box-Catch Hack The Box开始使用流程看这篇 文章目录 Hack The Box-Catch 整体思路 1.Nmap扫描 2.apk文件信息收集 3.lets ch ...

最新文章

  1. 中山大学提出新型行人重识别方法和史上最大最新评测基准
  2. 每日两句英语-7/7/2009
  3. Fibonacci Tree HDU - 4786——解题报告
  4. SAP ABAP Netweaver和Hybris Commerce的开发license
  5. 求一列数据中的波峰_PowerQuery:横向/纵向追加数据
  6. Qt::Window 独立窗口
  7. C++ 之const的使用
  8. 如何进行各种码制数据之间转换
  9. 获取本地ip地址 C#
  10. Windows Phone 数据库并行访问【转】
  11. mysql dump 到的文件_MySQL用mysqldump命令导出文本文件
  12. Mac 有道词典 无法取词、划词
  13. 基于欧拉-拉格朗日方程的机器人动力学模型
  14. 北京CMMB信号ESG的Schedule据文件--8月份数据
  15. ORACLE 考试的流程
  16. ct是计算机软件分析报告吗,ct影像工作站|ct诊断报告系统|ct图文工作站|dicom软件系统|技易科技-医学影像软件网...
  17. Available-Python-Tuf
  18. 怎么把好几行弄成一行_将多行内容合并成一行的两种方式
  19. AMBA总线概述——AHB、APB、AXI
  20. [react] addons

热门文章

  1. python斐波那契递归_Python递归斐波那契示例
  2. Android BroadcastReceiver示例教程
  3. Akka适用于分布式系统《five》译
  4. 完整的微服务系统应该包括哪些功能?
  5. C语言基础教程之强制类型转换
  6. 05-简单的输入输出
  7. ASP.NET Core 自动检查编译项目组件配置
  8. nginx 负载均衡proxy 配置
  9. java之关系运算符
  10. C++添加一个头文件和extern以及全局变量和局部变量问题(清C++蓝书16.3.19上机的一小题)...