Ioc 控制反转 实例
提前声明哈,这是个简单的实例, 目的是让我们了解一下 当前类是怎么通过 统一的父类 来操作其他类 对象的 。
非得定义接口(interface) ? 其实不是的 IOC 的接口其实是指的 提供使用的一个对象而已 ,并非 非得是接口。 只是接口看起来更加规范什么什么的。
这个小例子 你自己可以后续修改, 添加上 工厂模式,和仓储模式 那样就 才是个完整的 IOC
DI 认真百度过, 上面的代码从上往下看 那就是IOC ,使用的时候是从下往上看。那就的DI 。 话说 DI 就别纠结了。
--------------------------------------------------------我 是 分 隔 符 -------------------------------------------------------------------------------
吐槽的人太多了。写个完整点的 真心希望观看过的你给点意见。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication4
{
using System.Reflection;
using System.Runtime.Remoting.Messaging; class Program
{
static void Main(string[] args)
{ Db d = new Db(); d.IDb.IExamples1.CwExamples1(); Console.ReadKey(); }
} public class Db
{
private IWarehousing iDb; public IWarehousing IDb
{
get
{
if (this.iDb==null)
{
string serF = @"C:\Users\liwenpc\Documents\visual studio 2012\Projects\ConsoleApplication4\ConsoleApplication4\bin\Debug\ConsoleApplication4.exe";
string strFType = "ConsoleApplication4.Warehousing";
Assembly dal = Assembly.LoadFrom(serF);
Type type = dal.GetType(strFType);
IWarehousing Wh = Activator.CreateInstance(type) as IWarehousing;
this.iDb = Wh.ShoW();
}
return this.iDb;
} }
} public interface IWarehousing
{
IExamples1 IExamples1 { get; set; }
IExamples2 IExamples2 { get; set; } IWarehousing ShoW();
} public interface IExamples2
{
void CwExamples2();
} public interface IExamples1
{
void CwExamples1(); } public class Warehousing : IWarehousing
{
public IWarehousing ShoW()
{
IWarehousing ds = CallContext.GetData(typeof(Warehousing).Name) as Warehousing;
if (ds==null)
{
ds = new Warehousing();
CallContext.SetData(typeof(Warehousing).Name, ds);
}
return ds;
} private IExamples1 iExamples1;
public IExamples1 IExamples1
{
get
{
if (this.iExamples1 ==null)
{
this.iExamples1 = new Examples1();
}
return this.iExamples1;
}
set
{
this.iExamples1 = value;
}
}
private IExamples2 iExamples2;
public IExamples2 IExamples2
{
get
{
if (this.iExamples2==null)
{
this.iExamples2 = new Examples2();
}
return this.iExamples2;
}
set
{
this.iExamples2 = value;
}
}
} public class Examples1 : IExamples1
{
public void CwExamples1()
{
Console.WriteLine("我是实例1。。。");
}
} public class Examples2 : IExamples2
{
public void CwExamples2()
{
Console.WriteLine("我是实例2。。。");
}
} }
我这次用就接口 用了反射 提高了 耦合
其实 最直接的 就是去看 spring IOC
Ioc 控制反转 实例的更多相关文章
- Spring IoC控制反转创建实例
Spring IoC控制反转创建实例写一个配置文件beans.xml,配置文件的约束可以访问:完整链接:https://repo.spring.io/libs-release-local/org/sp ...
- 谈谈php里的IOC控制反转,DI依赖注入
理论 发现问题 在深入细节之前,需要确保我们理解"IOC控制反转"和"DI依赖注入"是什么,能够解决什么问题,这些在维基百科中有非常清晰的说明. 控制反转(In ...
- IoC实践--用Autofac实现MVC5.0的IoC控制反转方法
Autofac是一个.net平台下发性能还不错的IoC框架,利用它可以实现依赖注入和控制反转,使自己的软件模块之间的耦合性大大降低,让软件扩展.维护更加容易.控制反转(Inversion of Con ...
- Spring学习之Ioc控制反转(2)
开始之前: 1. 本博文为原创,转载请注明出处 2. 作者非计算机科班出身,如有错误,请多指正 ---------------------------------------------------- ...
- Spring详解(二)------IOC控制反转
我相信提到 Spring,很多人会脱口而出IOC(控制反转).DI(依赖注入).AOP等等概念,这些概念也是面试官经常问到的知识点.那么这篇博客我们就来详细的讲解 IOC控制反转. ps:本篇博客源码 ...
- IOC 控制反转(Inversion of Control,英文缩写为IoC)
在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 在这样的齿轮组中,因为是协同工作,如果有一个齿轮出了问题,就可能会影响到整个齿 ...
- .NET之IOC控制反转运用
当前场景: 如果有不同的用户.使用同一个系统.而不同的客户有某些不同的需求.在不改变系统主体的情况下,可以直接使用IOC控制反转依赖搭建项目 1.添加接口层 目前里面只有一个会员的类.里面有一个登录接 ...
- 【设计模式】不同设计模式体现IOC控制反转
使用过Spring的开发者应该都对IOC控制反转功能有所了解,最开始学习时应该都知道使用依赖注入来实现IOC的功能,本文来介绍使用IOC控制反转思想的几种设计模式. 依赖注入来实现IOC 注入依赖是I ...
- Spring Boot笔记十:IOC控制反转
目录 IOC控制反转和DI依赖注入 IOC实现Hello World Spring IOC容器怎么知道哪些是管理的对象? IOC容器getBean方法的三种签名 xml配置文件的import导入 @A ...
随机推荐
- HTML控件-Select
从今天开始,编写对于html控件的特性的探索文章,会广泛的引用网络的资源,所以本文的版权属于广大人民群众,欢迎转载,也同样禁止商业应用. [高手勿喷,标签页点击红色叉叉] select控件有一个特性: ...
- 【Unity Shaders】学习笔记——SurfaceShader(九)Cubemap
[Unity Shaders]学习笔记——SurfaceShader(九)Cubemap 如果你想从零开始学习Unity Shader,那么你可以看看本系列的文章入门,你只需要稍微有点编程的概念就可以 ...
- 实现web页面按比例缩放
对于web的掌握限于可以看懂别人的代码,并在框架中作相应修改或增加. 今天把另一个项目中的网页源代码粘过来做一个页面,结果问题百出. 首先,同样的代码,放在自己的项目里,页面排版错乱,看了下,引用的w ...
- sql server查询出的结果中添加一列序列行
select row_number()over(order by id) as rownum ,[UserName] ,[Password] ,[Mobile] ,[Email] ,[Sex] ,[C ...
- WWF3常用类 <第十一篇>
一.WorkflowRuntime类 System.Workflow.Runtime.WorkflowRuntime是工作流的运行引擎.WorkflowRuntime在宿主中以自己独立的线程运行,它可 ...
- 转载 《AngularJS》5个实例详解Directive(指令)机制
<AngularJS>5个实例详解Directive(指令)机制 大漠穷秋 本文整理并扩展了<AngularJS>这本书第六章里面的内容,此书近期即将由电子工业出版社出版,敬请 ...
- div模仿select效果二:带搜索框
项目需要,要做一个首字母快速定位的select,代码如下: HTML <div class="select_country" unselectable="on&qu ...
- 【Linux】部署cobbler
环境Centos 6.3,本地挂载镜像配置本地yum源 yum -y install dhcp httpd xinetd tftp-server http://dl.fedoraproject.org ...
- 索引 使用use index优化sql查询
好博客:MySQL http://webnoties.blog.163.com/blog/#m=0&t=1&c=fks_08407108108708107008508508609508 ...
- Linkedlist,arrayDeque,HashMap,linkedHashMap
Linkedlist 1.extneds AbstractSequentialList, implements List<E>, Deque<E>, Cloneable, ja ...