博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Castle.Windsor官网API外文翻译(一)---基本概念
阅读量:7117 次
发布时间:2019-06-28

本文共 1379 字,大约阅读时间需要 4 分钟。

hot3.png

1、IoC(Inversion of Control)

        IoC就是IoC,不是什么技术,与GoF一样,是一种设计模式。

       这和开发者直接调用API代码是相反的,因此,框架反转控制,也就是说对象的创建是由框架自己在某种时候创建。

        也许你在哪里已经应用了上面的原则,知识你还没有意识到这一点。

2、Inversion of Control Container

        人们常常认为Inversion of Control(控制反转)和Inversion of Control Container所表达的意思是差不多的,事实上Inversion of Control是一个更广义的概念。

         人们常说的“注入”是容器控制反转的最主要的用法,这大大的降低了系统的耦合度,简化了重用性和可测试性。

3、Services, Components and Dependencies(服务、组件、依赖)

        有一张很好的图形容:

       153603_9Ijd_1416844.png

        (1)services通常是一个抽象的概念,就像你去咖啡店想要一杯咖啡的服务,你不用关心咖啡豆的大小,用的什么机器。因此

你经常会发现您的服务将被定义为接口,接口是通过定义抽象的和有没有实现的。

public interface ICoffeeShop{   Future
 GetCoffee(CoffeeRequest request);}

        (2)Component与服务是有关的,服务是一个抽象的概念,他是不会给你咖啡的,而我们在一个真实的世界中,因此你需要到一个实际的咖啡店中完成这项服务。在C#中通常是指实现服务的类。

public class Starbucks: ICoffeeShop{   public Future
 GetCoffee(CoffeeRequest request)   {      // some implementation   }}

        我们要记住正如城里可以有很多家咖啡店,一个服务可以被很多组件实现(就像一家是星巴克,一家是CofeeClub)。

        一家咖啡店还以同时卖面包和烤肠,一个组件可以实现多个服务。

        (3)Dependency

        组件是为了实现服务而存在的,就像一家咖啡店依赖于一些公共服务(电力),还有其供应商提供的豆子和牛奶,所以组件要做的事情最终还是要委派与一些非本质的方面。

        现在我要重复一件很明显的事情,那就是组件要依赖于其他服务的组件,这样就可以很好的解耦你的咖啡店和牛奶送货员是如何操作的。

        你的组件除了可能依赖于其他服务的组件,还可能依赖于一些 connectionStrings和一些属性配置等等。

        在C#中依赖通常是通过构造函数和属性注入的,在一些高级的场景,组件和你执行的类没有关系。

4、Putting it all together

        我们把他们放在一起,就是一个高效容器的特点,小组件,定义良好,实现少,抽象服务,依赖于其他组件以及一些配置文件,执行一些服务的规约。

        你最终会得到很多小的,解耦的组件,这将允许你快速的改变和完善在一些特殊需求情况下。缺点就是你会有很多组件和依赖需要管理。

        这就是容器的工作内容。

不断完善中,敬请期待!

转载于:https://my.oschina.net/u/1416844/blog/287241

你可能感兴趣的文章
java生成短8位uuid
查看>>
我的友情链接
查看>>
更新日志 - BugHD 与你的应用一起成长
查看>>
华为三层交换机端口 二三层功能的切换
查看>>
h3c web 界面登录失败
查看>>
CentOS7下安装Docker-Compose
查看>>
rpm与tar的区别
查看>>
rsync配置
查看>>
IE6、IE7、IE8、Firefox兼容性CSS HACK代码+示例
查看>>
ASP.NET MVC中,通用的异常处理
查看>>
XtremSW缓存技术简介
查看>>
autorelease
查看>>
某网贷平台遭受***
查看>>
solidity 复杂类型的Data_Location
查看>>
Laravel 问题相关记录
查看>>
python里面__name__ = '__main__'的意思
查看>>
PHP的传值赋值和引用赋值的区别
查看>>
小程序跳转问题
查看>>
Ambari 2.4 安装教程,另附配置 haodoop lzo
查看>>
Python基础-Python基础使用
查看>>