代码之美~利用构造方法实现模块的解耦
解耦,不仅只是对程序的扩展性而言,它可能还是你使用你的程序从一个层面向另一个层面提高的基础,请认真对待这个词语“解耦”。
我相信,它将会成为与“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对象的松耦合,这使得它具有通用的特性,一般我们在设计通用功能时,经理使用这样方式。
本文转自博客园张占岭(仓储大叔)的博客,原文链接:代码之美~利用构造方法实现模块的解耦,如需转载请自行联系原博主。
代码之美~利用构造方法实现模块的解耦相关推荐
- python修改html内容_详解Python利用Beautiful Soup模块修改内容示例代码
Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python 库.它能够通过你喜欢的转换器实现惯用的文档导航.查找.修改文档的方式.他还能够修改HTML/XML文档的内容.这篇 ...
- 利用Python+opencv模块的dnn实现Faster R-CNN(一)
利用Python+opencv模块的dnn实现Faster R-CNN(一) 开发环境 faster r-cnn学习 -*- coding: utf-8 -*- -*- coding: utf-8 - ...
- 利用Instrumentation单元测试模块控制安卓手机进行各项操作(微信)
本篇讲解的是利用Instrumentation单元测试模块来控制以获取root权限的手机进行操作微信的简单基础讲解,以一个自己写的一个成品Demo(能够跑出想要的结果,但是博客无法上传视频文件所以只能 ...
- micropython四位数码管程序代码(YX55759-+4位数码管模块)
micropython 4位数码管程序代码(YX55759-+4位数码管模块) 成品代码 实验器材&接线 代码思路&控制逻辑 应用 成品代码 话不多说,直接看最后可以直接使用的代码. ...
- 利用科大讯飞语音合成模块SDK实现ROS语音交互
利用科大讯飞语音合成模块SDK实现ROS语音交互 本文内容与CSDN博主「AI Chen」的原创文章相同,可以直接参考原文:https://blog.csdn.net/qq_39400324/arti ...
- 代码之美——Doom3源代码赏析2
http://www.csdn.net/article/2013-01-17/2813778-the-beauty-of-doom3-source-code/2 摘要:Dyad作者.资深C++工程师S ...
- 代码之美——Doom3源代码赏析
摘要:Dyad作者.资深C++工程师Shawn McGrathz在空闲时翻看了Doom3的源代码,发出了这样的惊叹:"这是我见过的最整洁.最优美的代码!""Doom 3的 ...
- 墨者学院Tomcat 远程代码执行漏洞利用
墨者学院Tomcat 远程代码执行漏洞利用 进靶场后界面是这样的,先用bp抓包 发现抓不到包,刷新两下然后放包试试,放包到看到这个界面就可以了,看地址判断有没有抓到包 抓到包之后用PUT传参 这里可以 ...
- 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 ...
最新文章
- 中山大学提出新型行人重识别方法和史上最大最新评测基准
- 每日两句英语-7/7/2009
- Fibonacci Tree HDU - 4786——解题报告
- SAP ABAP Netweaver和Hybris Commerce的开发license
- 求一列数据中的波峰_PowerQuery:横向/纵向追加数据
- Qt::Window 独立窗口
- C++ 之const的使用
- 如何进行各种码制数据之间转换
- 获取本地ip地址 C#
- Windows Phone 数据库并行访问【转】
- mysql dump 到的文件_MySQL用mysqldump命令导出文本文件
- Mac 有道词典 无法取词、划词
- 基于欧拉-拉格朗日方程的机器人动力学模型
- 北京CMMB信号ESG的Schedule据文件--8月份数据
- ORACLE 考试的流程
- ct是计算机软件分析报告吗,ct影像工作站|ct诊断报告系统|ct图文工作站|dicom软件系统|技易科技-医学影像软件网...
- Available-Python-Tuf
- 怎么把好几行弄成一行_将多行内容合并成一行的两种方式
- AMBA总线概述——AHB、APB、AXI
- [react] addons
热门文章
- python斐波那契递归_Python递归斐波那契示例
- Android BroadcastReceiver示例教程
- Akka适用于分布式系统《five》译
- 完整的微服务系统应该包括哪些功能?
- C语言基础教程之强制类型转换
- 05-简单的输入输出
- ASP.NET Core 自动检查编译项目组件配置
- nginx 负载均衡proxy 配置
- java之关系运算符
- C++添加一个头文件和extern以及全局变量和局部变量问题(清C++蓝书16.3.19上机的一小题)...