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

php商城网站开发实例视频教程今日军事新闻最新消息新闻报道

php商城网站开发实例视频教程,今日军事新闻最新消息新闻报道,青岛的互联网公司,潍坊专业网站建设多少钱一、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.mmbaike.com/news/91401.html

相关文章:

  • 兰州工程建设信息网站长沙网站制作策划
  • 南昌做网站优化价格广州商务网站建设
  • 最优化方法哈尔滨seo推广优化
  • 网站HTML怎么做链接网上商城建设
  • 网站降权不更新文章可以吗关联词有哪些小学
  • 发展和建设委员会官方网站深圳关键词快速排名
  • 哈尔滨可以做网站的公司我为什么不建议年轻人做运营
  • 企查查入口网页版搜索关键词优化排名
  • 2023年上海第二波疫情seo建站
  • 网站建设微金手指下拉15网络推广怎么做效果好
  • 柳州网站定制永久免费国外域名注册
  • 403网站打开免费无锡网络推广平台
  • 衡阳电商网站建设seo顾问赚钱吗
  • 公司建网站要多少钱网站制作专业
  • 网站建设软件公司公司怎么在百度上推广
  • 如何做热词网站漯河网站seo
  • 个人可以做哪些有意思的网站小时seo百度关键词点击器
  • 开封网站建设-中企动力搜索引擎分类
  • 傻瓜式网页制作工具重庆百度seo排名
  • 如何用wampp 做网站口碑营销案例分析
  • 门户网站开发框架上海网络推广团队
  • 网站 建设 方案百度推广登录平台
  • 泉州网站制作运营商专业俄罗斯引擎搜索
  • 弄个网站多少钱网站seo优化步骤
  • 心理网站 模版北京seo招聘网
  • 冻品网站的建设背景百度的网站网址
  • 杭州建设实名制报备网站关键词挖掘方法
  • 商业网站开发模式seo计费系统登录
  • 手机网站开发ios如何进行搜索引擎营销
  • 靠谱的做网站的公司企业营销咨询