当前位置: 首页 > news >正文

别人做的网站自己根目录吗3d设计软件有哪些软件

别人做的网站自己根目录吗,3d设计软件有哪些软件,重庆专业做网站的公司,南京工程网站建设IOC:英文全称#xff1a;Inversion of Control#xff0c;中文名称#xff1a;控制反转#xff0c;它还有个名字叫依赖注入#xff08;Dependency Injection#xff09;。 作用#xff1a;将各层的对象以松耦合的方式组织在一起#xff0c;解耦#xff0c;各层对象的调… IOC:英文全称Inversion of Control中文名称控制反转它还有个名字叫依赖注入Dependency Injection。 作用将各层的对象以松耦合的方式组织在一起解耦各层对象的调用完全面向接口。当系统重构的时候代码的改写量将大大减少。 理解依赖注入当一个类的实例需要另一个类的实例协助时在传统的程序设计过程中通常有调用者来创建被调用者的实例。然而采用依赖注入的方式创建被调用者的工作不再由调用者来完成因此叫控制反转创建被调用者的实例的工作由IOC容器来完成然后注入调用者因此也称为依赖注入。 举个有意思的例子来源于互联网假如我们要设计一个Girl和一个Boy类其中Girl有Kiss方法即Girl想要Kiss一个Boy首先问题是Girl如何认识Boy在我们中国常见的MM认识GG的方式有以下几种A 青梅竹马 B 亲友介绍 C 父母包办哪一种是最好的 1.青梅竹马很久很久以前有个有钱的地主家的一闺女叫Lily她老爸把她许配给县太爷的儿子Jimmy属于指腹为婚Lily非常喜欢kiss,但是只能kiss Jimmypublic class Lily{ public Jimmy jimmy; public Girl() { jimmynew Jimmy(); } public void Kiss() { jimmy.Kiss(); } } public class Jimmy { public void Kiss() { Console.WriteLine(kissing); } } 这样导致Lily对Jimmy的依赖性非常强紧耦合。2.亲友介绍经常Kiss同一个人令Lily有些厌恶了她想尝试新人于是与Jimmy分手了通过亲朋好友中间人来介绍public class Lily{ public Boy boy; public Girl() { boyBoyFactory.createBoy(); } public void Kiss() { boy.Kiss(); } } 亲友介绍固然是好。如果不满意尽管另外换一个好了。但是亲友BoyFactory经常是以Singleton的形式出现不然就是存在于Globals无处不在无处不能。实在是太繁琐了一点不够灵活。我为什么一定要这个亲友掺和进来呢为什么一定要付给她介绍费呢万一最好的朋友爱上了我的男朋友呢3.父母包办一切交给父母自己不用非吹灰之力Lily在家只Kisspublic class Lily{ public Boy boy; public Girl(Boy boy) { this.boyboy; } public void Kiss() { this.boy.Kiss(); } } Well这是对Girl最好的方法只要想办法贿赂了Girl的父母并把Boy交给他。那么我们就可以轻松的和Girl来Kiss了。看来几千年传统的父母之命还真是有用哦。至少Boy和Girl不用自己瞎忙乎了。这就是IOC将对象的创建和获取提取到外部。由外部容器提供需要的组件。在设计模式中我们应该还知道依赖倒转原则应是面向接口编程而不是面向功能实现好处是多实现可以任意切换我们的Boy应该是实现Kissable接口。这样一旦Girl不想kiss可恶的Boy的话还可以kiss可爱的kitten和慈祥的grandmother好在.net中微软有一个轻量级的IoC框架Unity支持构造器注入属性注入方法注入如下图所示具体使用方法如下图所示using System; using Microsoft.Practices.Unity; namespace ConsoleApplication9 { class Program { static void Main(string[] args) { //创建容器 IUnityContainer containernew UnityContainer(); //注册映射 container.RegisterTypeIKiss, Boy(); //得到Boy的实例 var boy container.ResolveIKiss(); Lily lily new Lily(boy); lily.kiss(); } } public interface IKiss { void kiss(); } public class Lily:IKiss { public IKiss boy; public Lily(IKiss boy) { this.boyboy; } public void kiss() { boy.kiss(); Console.WriteLine(lily kissing); } } public class Boy : IKiss { public void kiss() { Console.WriteLine(boy kissing); } } } 如果采用配置文件注册的话?xml version1.0 encodingutf-8 ? configuration configSections section nameunity typeMicrosoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration/ /configSections unity containers container namedefaultContainer register type命名空间.接口类型1,命名空间 mapTo命名空间.实现类型1,命名空间 / register type命名空间.接口类型2,命名空间 mapTo命名空间.实现类型2,命名空间 / /container /containers /unity /configuration 配置的后台代码UnityConfigurationSection configuration ConfigurationManager.GetSection(UnityConfigurationSection.SectionName) as UnityConfigurationSection; configuration.Configure(container, defaultContainer); 可以通过方法ResolveAll来得到所有注册对象的实例 var Instances container.ResolveIKiss();Martin Fowler在那篇著名的文章《Inversion of Control Containers and the Dependency Injection pattern》中将具体依赖注入划分为三种形式即构造器注入、属性设置注入和接口注入,习惯将其划分为一种类型匹配和三种注入类型匹配Type Matching虽然我们通过接口或者抽象类来进行服务调用但是服务本身还是实现在某个具体的服务类型中这就需要某个类型注册机制来解决服务接口和服务类型之间的匹配关系 构造器注入Constructor InjectionIoC容器会智能地选择选择和调用适合的构造函数以创建依赖的对象。如果被选择的构造函数具有相应的参数IoC容器在调用构造函数之前解析注册的依赖关系并自行获得相应参数对象 属性注入Property Injection如果需要使用到被依赖对象的某个属性在被依赖对象被创建之后IoC容器会自动初始化该属性 方法注入Method Injection如果被依赖对象需要调用某个方法进行相应的初始化在该对象创建之后IoC容器会自动调用该方法。我们创建一个控制台程序定义如下几个接口IA、IB、IC和ID和它们各自的实现类A、B、C、D。在类型A中定义了3个属性B、C和D其类型分别为接口IB、IC和ID。其中属性B在构在函数中被初始化以为着它会以构造器注入的方式被初始化属性C上应用了DependencyAttribute特性意味着这是一个需要以属性注入方式被初始化的依赖属性属性D则通过方法Initialize初始化该方法上应用了特性InjectionMethodAttribute意味着这是一个注入方法在A对象被IoC容器创建的时候会被自动调用。public interface IA { } public interface IB { } public interface IC { } public interface ID { } public class A : IA { public IB B { get; set; } [Dependency] public IC C { get; set; } public ID D { get; set; } public A(IB b) { this.B b; } [InjectionMethod] public void Initalize(ID d) { this.D d; } } public class B : IB { } public class C : IC { } public class D : ID { } 然后我们为该应用添加一个配置文件并定义如下一段关于Unity的配置。这段配置定义了一个名称为defaultContainer的Unity容器并在其中完成了上面定义的接口和对应实现类之间映射的类型匹配。?xml version1.0 encodingutf-8 ? configuration configSections section nameunity typeMicrosoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration/ /configSections unity containers container namedefaultContainer register typeUnityDemo.IA,UnityDemo mapToUnityDemo.A, UnityDemo/ register typeUnityDemo.IB,UnityDemo mapToUnityDemo.B, UnityDemo/ register typeUnityDemo.IC,UnityDemo mapToUnityDemo.C, UnityDemo/ register typeUnityDemo.ID,UnityDemo mapToUnityDemo.D, UnityDemo/ /container /containers /unity /configuration 最后在Main方法中创建一个代表IoC容器的UnityContainer对象并加载配置信息对其进行初始化。然后调用它的泛型的Resolve方法创建一个实现了泛型接口IA的对象。最后将返回对象转变成类型A并检验其B、C和D属性是否是空class Program { static void Main(string[] args) { UnityContainer container new UnityContainer(); UnityConfigurationSection configuration ConfigurationManager.GetSection(UnityConfigurationSection.SectionName) as UnityConfigurationSection; configuration.Configure(container, defaultContainer); A a container.ResolveIA() as A; if (null!a) { Console.WriteLine(a.Bnull?{0},a.Bnull?Yes:No); Console.WriteLine(a.Cnull?{0}, a.C null ? Yes : No); Console.WriteLine(a.Dnull?{0}, a.D null ? Yes : No); } } } 从如下给出的执行结果我们可以得到这样的结论通过ResolveIA方法返回的是一个类型为A的对象该对象的三个属性被进行了有效的初始化。这个简单的程序分别体现了接口注入通过相应的接口根据配置解析出相应的实现类型、构造器注入属性B、属性注入属性C和方法注入属性Da.B null ? Noa.C null ? Noa.D null ? No http://www.cnblogs.com/zhangchenliang/archive/2013/01/08/2850970.html IOC:英文全称Inversion of Control中文名称控制反转它还有个名字叫依赖注入Dependency Injection。作用将各层的对象以松耦合的方式组织在一起解耦各层对象的调用完全面向接口。当系统重构的时候代码的改写量将大大减少。理解依赖注入    当一个类的实例需要另一个类的实例协助时在传统的程序设计过程中通常有调用者来创建被调用者的实例。然而采用依赖注入的方式创建被调用者的工作不再由调用者来完成因此叫控制反转创建被调用者的实例的工作由IOC容器来完成然后注入调用者因此也称为依赖注入。举个有意思的例子来源于互联网 假如我们要设计一个Girl和一个Boy类其中Girl有Kiss方法即Girl想要Kiss一个Boy首先问题是Girl如何认识Boy 在我们中国常见的MM认识GG的方式有以下几种 A 青梅竹马    B 亲友介绍   C 父母包办 哪一种是最好的 1.青梅竹马很久很久以前有个有钱的地主家的一闺女叫Lily她老爸把她许配给县太爷的儿子Jimmy属于指腹为婚Lily非常喜欢kiss,但是只能kiss Jimmy public class Lily{          public Jimmy jimmy;           public Girl()          {              jimmynew Jimmy();          }          public void Kiss()          {              jimmy.Kiss();          }      }        public class Jimmy      {          public void Kiss()          {              Console.WriteLine(kissing);          }      }   这样导致Lily对Jimmy的依赖性非常强紧耦合。 2.亲友介绍经常Kiss同一个人令Lily有些厌恶了她想尝试新人于是与Jimmy分手了通过亲朋好友中间人来介绍 public class Lily{          public Boy boy;             public Girl()          {              boyBoyFactory.createBoy();          }          public void Kiss()          {              boy.Kiss();          }      }   亲友介绍固然是好。如果不满意尽管另外换一个好了。但是亲友BoyFactory经常是以Singleton的形式出现不然就是存在于Globals无处不在无处不能。实在是太繁琐了一点不够灵活。我为什么一定要这个亲友掺和进来呢为什么一定要付给她介绍费呢万一最好的朋友爱上了我的男朋友呢   3.父母包办一切交给父母自己不用非吹灰之力Lily在家只Kiss public class Lily{          public Boy boy;           public Girl(Boy boy)          {              this.boyboy;          }          public void Kiss()          {              this.boy.Kiss();          }      }       Well这是对Girl最好的方法只要想办法贿赂了Girl的父母并把Boy交给他。那么我们就可以轻松的和Girl来Kiss了。看来几千年传统的父母之命还真是有用哦。至少Boy和Girl不用自己瞎忙乎了。这就是IOC将对象的创建和获取提取到外部。由外部容器提供需要的组件。 在设计模式中我们应该还知道依赖倒转原则应是面向接口编程而不是面向功能实现好处是多实现可以任意切换我们的Boy应该是实现Kissable接口。这样一旦Girl不想kiss可恶的Boy的话还可以kiss可爱的kitten和慈祥的grandmother 好在.net中微软有一个轻量级的IoC框架Unity支持构造器注入属性注入方法注入如下图所示 具体使用方法如下图所示 using System;    using Microsoft.Practices.Unity;      namespace ConsoleApplication9  {      class Program      {          static void Main(string[] args)          {              //创建容器              IUnityContainer containernew UnityContainer();              //注册映射              container.RegisterTypeIKiss, Boy();              //得到Boy的实例              var boy  container.ResolveIKiss();                           Lily lily  new Lily(boy);              lily.kiss();          }      }          public interface IKiss      {          void kiss();      }              public class Lily:IKiss      {            public IKiss boy;             public Lily(IKiss boy)          {              this.boyboy;          }          public void kiss()          {              boy.kiss();              Console.WriteLine(lily kissing);          }      }        public class Boy : IKiss      {          public void kiss()          {              Console.WriteLine(boy kissing);          }      }  }   如果采用配置文件注册的话 ?xml version1.0 encodingutf-8 ?  configuration    configSections      section nameunity typeMicrosoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration/    /configSections    unity      containers        container namedefaultContainer          register type命名空间.接口类型1,命名空间 mapTo命名空间.实现类型1,命名空间 /          register type命名空间.接口类型2,命名空间 mapTo命名空间.实现类型2,命名空间 /        /container      /containers    /unity  /configuration   配置的后台代码 UnityConfigurationSection configuration  ConfigurationManager.GetSection(UnityConfigurationSection.SectionName)              as UnityConfigurationSection;  configuration.Configure(container, defaultContainer);   可以通过方法ResolveAll来得到所有注册对象的实例var Instances  container.ResolveIKiss();Martin Fowler在那篇著名的文章《Inversion of Control Containers and the Dependency Injection pattern》中将具体依赖注入划分为三种形式即构造器注入、属性设置注入和接口注入,习惯将其划分为一种类型匹配和三种注入 类型匹配Type Matching虽然我们通过接口或者抽象类来进行服务调用但是服务本身还是实现在某个具体的服务类型中这就需要某个类型注册机制来解决服务接口和服务类型之间的匹配关系构造器注入Constructor InjectionIoC容器会智能地选择选择和调用适合的构造函数以创建依赖的对象。如果被选择的构造函数具有相应的参数IoC容器在调用构造函数之前解析注册的依赖关系并自行获得相应参数对象属性注入Property Injection如果需要使用到被依赖对象的某个属性在被依赖对象被创建之后IoC容器会自动初始化该属性方法注入Method Injection如果被依赖对象需要调用某个方法进行相应的初始化在该对象创建之后IoC容器会自动调用该方法。    我们创建一个控制台程序定义如下几个接口IA、IB、IC和ID和它们各自的实现类A、B、C、D。在类型A中定义了3个属性B、C和D其类型分别为接口IB、IC和ID。其中属性B在构在函数中被初始化以为着它会以构造器注入的方式被初始化属性C上应用了DependencyAttribute特性意味着这是一个需要以属性注入方式被初始化的依赖属性属性D则通过方法Initialize初始化该方法上应用了特性InjectionMethodAttribute意味着这是一个注入方法在A对象被IoC容器创建的时候会被自动调用。 public interface IA { }      public interface IB { }      public interface IC { }      public interface ID { }        public class A : IA      {          public IB B { get; set; }          [Dependency]          public IC C { get; set; }          public ID D { get; set; }            public A(IB b)          {              this.B  b;          }          [InjectionMethod]          public void Initalize(ID d)          {              this.D  d;          }      }      public class B : IB { }      public class C : IC { }      public class D : ID { }   然后我们为该应用添加一个配置文件并定义如下一段关于Unity的配置。这段配置定义了一个名称为defaultContainer的Unity容器并在其中完成了上面定义的接口和对应实现类之间映射的类型匹配。 ?xml version1.0 encodingutf-8 ?  configuration    configSections      section nameunity typeMicrosoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration/    /configSections    unity      containers        container namedefaultContainer          register typeUnityDemo.IA,UnityDemo mapToUnityDemo.A, UnityDemo/          register typeUnityDemo.IB,UnityDemo mapToUnityDemo.B, UnityDemo/          register typeUnityDemo.IC,UnityDemo mapToUnityDemo.C, UnityDemo/          register typeUnityDemo.ID,UnityDemo mapToUnityDemo.D, UnityDemo/        /container      /containers    /unity  /configuration   最后在Main方法中创建一个代表IoC容器的UnityContainer对象并加载配置信息对其进行初始化。然后调用它的泛型的Resolve方法创建一个实现了泛型接口IA的对象。最后将返回对象转变成类型A并检验其B、C和D属性是否是空 class Program      {          static void Main(string[] args)          {              UnityContainer container  new UnityContainer();              UnityConfigurationSection configuration  ConfigurationManager.GetSection(UnityConfigurationSection.SectionName) as UnityConfigurationSection;              configuration.Configure(container, defaultContainer);              A a  container.ResolveIA() as A;              if (null!a)              {                  Console.WriteLine(a.Bnull?{0},a.Bnull?Yes:No);                  Console.WriteLine(a.Cnull?{0}, a.C  null ? Yes : No);                  Console.WriteLine(a.Dnull?{0}, a.D  null ? Yes : No);              }          }      }   从如下给出的执行结果我们可以得到这样的结论通过ResolveIA方法返回的是一个类型为A的对象该对象的三个属性被进行了有效的初始化。这个简单的程序分别体现了接口注入通过相应的接口根据配置解析出相应的实现类型、构造器注入属性B、属性注入属性C和方法注入属性D a.B null ? No a.C null ? No a.D null ? No转载于:https://www.cnblogs.com/wangchuang/p/5650911.html
http://www.sadfv.cn/news/117646/

相关文章:

  • 昆明网站设计公司360浏览器网页
  • 将网站保存怎么做手机浏览wordpress
  • 手机网站app制作公司个人电脑做外网网站
  • 企业网站建设咨询个人业务网站制作
  • 淄博网站代运营被骗怎么追回
  • 网站繁体和中文这么做帝国做网站怎么加视频
  • 网站首页的psd怎么做电商网站开发需要什么语言
  • 规划管理部门的网站建设广州网站运营专注乐云seo
  • 如何在12366网站上做实名认证苏州网页制作培训
  • 简单个人网站欣赏凡科网手机版下载
  • 1999年怎样建立企业网站可以上传高清图片的网站并做外链
  • 江苏林润建设工程有限公司网站网站慢的原因
  • 成都企业网站建设凡科网登录手机端
  • 能直接用网站做海报吗互联网技术对人力资源管理的影响有哪些
  • 北京网站建设公司网站优化韩式风格的网页设计欣赏
  • 卖印花图案设计网站娱乐城网站建设
  • 取消网站备案网站建设外文版政策文件
  • 济南网站建设制作设计长沙网站搜索排名
  • 国外企业网站建设模型网站制作价格 上海
  • qt做网站cms进行网站开发
  • 用html做一号店网站怎么做pc网站建设需要提供哪些资料
  • 做公司网站要什么资料网站开发多少钱一天是
  • 做国内网站花费2024年重大新闻摘抄
  • 网站修改关键词企业网站建设 总结
  • 网站代更新沈阳妇科医院排名前十有哪些
  • 用html5制作个人网站网站建设岗位廉政风险防控
  • 自适应型网站建设推荐解决网站兼容性问题
  • 一般做公司网站需要哪几点国外网站做网上生意哪个好
  • wood怎么做网站结构图node.js做的网站
  • 网站服务器及运营维护公告学校局域网站建设