一步步到IOC
2024-09-01 06:22:04
一段代码
class Program
{
static void Main(string[] args)
{
var shop=new Shop();
shop.Add();
shop.Delete();
Console.ReadKey();
}
}
class Shop
{
readonly Log4NetServices _logServices;
public Shop()
{
_logServices = new Log4NetServices();
}
public void Add()
{
_logServices.Write("增加商品");
}
public void Delete()
{
_logServices.Write("删除商品");
}
}
问题
- 依赖具体Log4NetServices,要换成FileLogServices就要改
依赖
依赖就是依赖抽象
变形:
readonly ILogServices _logServices;
这样在实际使用中,不用管ILogServices的实现,由Shop的构造函数负责给具体实现
问题
- Shop本身也不知道是用Log4NetServices还是FileLogServices,但使用者肯定是知道的。
注入
注入就是将你需要的东西传给你,不用你自己new
变形:
class Program
{
static void Main(string[] args)
{
var shop=new Shop(new Log4NetServices());
shop.Add();
shop.Delete();
shop=new Shop(new FileLogServices());
shop.Add();
shop.Delete();
Console.ReadKey();
}
}
class Shop
{
readonly ILogServices _logServices;
public Shop(ILogServices logServices)
{
_logServices = logServices;
}
public void Add()
{
_logServices.Write("增加商品");
}
public void Delete()
{
_logServices.Write("删除商品");
}
}
问题:
- 需要的人多了,我一个个new?
- 需要的种类多了,我一个个new?
- 能不能把new的东西放一起,需要的人统一从里面拿。
IOC
dotnetcore 的ioc示例
class Program
{
static void Main(string[] args)
{
var serviceCollection = new ServiceCollection();
serviceCollection.AddSingleton<ILogServices, Log4NetServices>();
var serviceProvider = serviceCollection.BuildServiceProvider();
var logServices = serviceProvider.GetService<ILogServices>();
var shop = new Shop(logServices);
shop.Add();
shop.Delete();
Console.ReadKey();
}
}
最新文章
- java web学习总结(二十五) -------------------JSP中的九个内置对象
- Spring Aspectj切入点语法定义
- Swift3.0都有哪些变化
- AndroidStudio NDK配置使用以及错误集合
- How to relocate tablespace directory
- onCreateOptionsMenu 和 onPrepareOptionsMenu 的区别
- 在xcode上搭建OpenGL3.x运行环境
- mysql 统计 每天累计用户数
- XPath总结一
- Android Animations动画使用详解
- ubuntu14.04通过将语音,耳机没有声音
- 【Java基础】String StringBuffer StringBuilder
- HDU-3032
- python的小基础
- 关于terraform的状态管理
- OSX 鼠标和键盘事件
- springboot~基于单元测试的mongodb
- 特殊计数序列——第一类斯特林(stirling)数
- SAP MM 无价值物料管理的一种实现思路
- 转://11g之后,通过v$wait_chains视图诊断数据库hang和Contention