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

基本的网站开发技术网站ip查询

基本的网站开发技术,网站ip查询,php和ASP网站那个好,phpcms 还有人用吗一、IOC控制反转和DI依赖倒置 1、IOC框架核心原理是依赖倒置原则 C#设计模式的六大原则 使用这种思想方式,可以让我们无需关心对象的生成方式,只需要告诉容器我需要的对象即可,而告诉容器我需要对象的方式就叫做DI(依赖注入&…

一、IOC控制反转和DI依赖倒置

1、IOC框架核心原理是依赖倒置原则

C#设计模式的六大原则

使用这种思想方式,可以让我们无需关心对象的生成方式,只需要告诉容器我需要的对象即可,而告诉容器我需要对象的方式就叫做DI(依赖注入)

 今天主要想研究一下DI(依赖注入),这里我选了VContainer

地址:https://github.com/hadashiA/VContainer

文档地址:https://vcontainer.hadashikick.jp/

 二、VContainer介绍

 由于我们使用的是Unity,而主要的Mono不支持构造函数。所以我们这里选择注入方式主要是特性注入和方法注入

  三、VContainer案例

(1)简单方法注入:

1、注册类型

public class GameLifetimeScope : LifetimeScope
{protected override void Configure(IContainerBuilder builder){builder.RegisterEntryPoint<ActorPresenter>();}
}

2、方法注入

这里实现接口 IStartableITickable。它是不依赖于Mono的接口,因此性能上更好,另一方面,IStartable与Mono的Start,ITickable与Mono的Update都是相同的。

public class ActorPresenter : IStartable,ITickable
{public void Start(){Debug.Log("Start ActorPresenter");}public void Tick(){Debug.Log("Update ActorPresenter");}
}

(2)基础MVC功能:

Model层

public class UIModel
{public void Hello() {Debug.Log("Hello World");}
}

View层

public class UIView : MonoBehaviour
{public Button button;
}

 Control层

public class UIControl : IStartable
{readonly UIModel _model;readonly UIView _view;public UIControl(UIModel model){this._model = model;}public UIControl(UIModel model, UIView view){this._model = model;this._view = view;}public void Start(){_view.button.onClick.AddListener(() => _model.Hello());}
}

通过这样做,我们成功地分离了领域控制/控制流/显示组件

在VContainter中,记得注册

public class GameLifetimeScope : LifetimeScope
{public UIView helloScreen;protected override void Configure(IContainerBuilder builder){builder.RegisterEntryPoint<UIControl>();builder.Register<UIModel>(Lifetime.Singleton);builder.RegisterComponent(helloScreen);}
}

(3)构造注入

        构造函数里,只需要写一个需要依赖注入的函数,成员变量里就可以随时获得对象。如下例子ClassB构造函数的参数是ClassA,我们的classA变量就可以随时使用

class ClassB : IStartable,ITickable
{readonly ClassA a;public ClassB(ClassA a){Debug.Log("ClassA构造函数注入");this.a = a;}public void Start(){a.Start();}public void Tick(){a.Update();}
}
class ClassA
{public ClassA(){Debug.Log("ClassA构造");}public void Start(){Debug.Log("Start");}public void Update() {Debug.Log("Update");}
}
public class GameLifetimeScope : LifetimeScope
{//public UIView helloScreen;protected override void Configure(IContainerBuilder builder){builder.RegisterEntryPoint<ClassB>();builder.Register<ClassA>(Lifetime.Singleton);}
}
(4)方法注入(其他的和上边一样)
class ClassB : IStartable,ITickable
{private ClassA a;[Inject]public void GetClassA(ClassA a) {Debug.Log("方法注入");this.a = a;}public void Start(){a.Start();}public void Tick(){a.Update();}
}
(5)字段/属性注入
class ClassB : IStartable,ITickable
{[Inject]private ClassA a;public void Start(){a.Start();}public void Tick(){a.Update();}
}

http://www.dinnco.com/news/43052.html

相关文章:

  • 福州仓山区网站建设百度 seo排名查询
  • 北京网站制作人才互联网舆情
  • 皮肤测试网站怎么做沈阳seo优化排名公司
  • wordpress 原生中文主题沈阳seo排名优化教程
  • 免费下载软件全免费百度优化插件
  • seo搜索引擎的优化宁波网站关键词优化排名
  • 随州网站建设哪家好百度seo 站长工具
  • 成都农产品网站建设方案盐城seo推广
  • 网站建设cms地推拉新app推广平台有哪些
  • 马云之前做的网站东莞发布最新通告
  • 微软做网站的工具最新军事新闻事件今天
  • 免费网站后台管理系统seo关键词推广多少钱
  • 网站高端网站建设重庆网站建设软件
  • 大学英文网站建设推广平台排行榜有哪些
  • 青浦苏州网站建设迅雷bt磁力链 最好用的搜索引擎
  • 常用的网站推广的方式方法唐山百度seo公司
  • 怎么在日本做乐天网站供货商成都网站建设公司排名
  • vps云主机可以做网站关键词热度分析
  • 虹桥做网站公司大兵seo博客
  • 西安网站建设中企建站企业营销网站制作
  • 政府门户网站的功能广州头条新闻最新
  • 网站代码修改最新的新闻 最新消息
  • 百度的网站收录怎么做百度竞价托管靠谱吗
  • 松江做网站的公司网络营销的公司有哪些
  • 帮人做兼职的网站苏州seo关键词优化软件
  • 搜索引擎网站推广法 怎么做超级外链在线发布
  • 注册科技有限公司可以做网站吗深圳全网营销方案
  • 仙桃网站设计dy刷粉网站推广马上刷
  • 海口网站运营托管咨询网站seo查询
  • 易语言做钓鱼网站2345网址导航大全