首页 > 其他分享 >Prism:结语

Prism:结语

时间:2024-08-28 20:14:23浏览次数:5  
标签:容器 依赖 结语 Prism 注册 new 注入

Prism:结语

prism基本功能也已经学完了,在学习过程中遇到过很多问题,其中就有一点条我就一直困惑,那就是:依赖注入

什么是依赖注入:(gpt写的)

依赖注入(Dependency Injection,简称 DI) 是一种设计模式和编程技术,用于实现控制反转(Inversion of Control,IoC)。它通过将对象的依赖项从对象内部移到外部来减少组件之间的耦合,提高代码的可维护性和可测试性。

我的理解:高层原本是依赖于低层,但是为了降低耦合性,我们常常会创建一个接口,让低层与继承这个接口,这样我们最终就是:

高层依赖于抽象,而低层去实现这个抽象

这样还是不行,因为在初始化的时候依旧会new一个对象,低层通过带抽象参数的方法注入其中,new依旧是不解耦的,这时就可以通过控制反转(IOC)去掉new关键字。

下面打个比喻:

传统:A new 一个 B ,也就是A 控制 B

使用控制反转(IOC)后:A就把这个权力反转给了这个容器(prism中注册视图、module等),当A需要B的时候,由容器把B给注入进来(不用new关键字,prism中通过构造函数的方式来注入的),这个就叫依赖注入。总的来说,控制反转与依赖注入是离不开的。

第2个困惑是Prism中注册与注入的区别:

注册 (Registration)

注册是指向依赖注入容器中添加类型及其生命周期的过程。当你注册一个类型时,你实际上是告诉容器如何创建该类型的实例以及如何管理它的生命周期。注册通常发生在应用程序启动阶段,在 Bootstrapper 类的 RegisterTypes 方法中完成。

注册的时机

  1. 初始化阶段:在应用程序启动时,通常在 RegisterTypes 方法中进行注册。
  2. 模块加载时:模块可以注册它们自己的类型和服务。

注入 (Injection)

注入是指依赖注入容器在运行时创建对象并为其注入所需依赖项的过程。依赖注入有助于降低组件之间的耦合度,使代码更加灵活和易于测试。

注入的时机

  1. 构造函数注入:最常用的方式,依赖项通过构造函数传递给对象。
  2. 属性注入:依赖项通过属性赋值。
  3. 方法注入:依赖项通过方法参数传递。

image-20240828193815002

在Prism源码中,已经提前向IOC容器注入了如下内容:

image-20240828194444509

标签:容器,依赖,结语,Prism,注册,new,注入
From: https://www.cnblogs.com/zhuiyine/p/18385490

相关文章

  • Prism:事件聚合器
    Prism:事件聚合器Prism框架提供了一个事件聚合器,可以帮助不同模块之间进行解耦和通信。开发人员可以通过发布和订阅事件来实现模块之间的交互。IEventAggregator松耦合基于事件通讯多个发布者和订阅者微弱的事件过滤事件传递参数取消订阅该功能主要作用为,事件聚合器......
  • Prism:框架介绍与安装
    Prism:框架介绍与安装什么是Prism?Prism是一个用于在WPF、XamarinForm、Uno平台和WinUI中构建松散耦合、可维护和可测试的XAML应用程序框架Githubhttps://github.com/PrismLibrary/PrismNuGethttps://www.nuget.org/packages/Prism.WpfVS2022拓展功能:MVVM、依赖......
  • Prism:区域(Region)
    Prism:区域(Region)什么是区域?区域(Region)用于实现模块化应用程序中的视图组织和管理。区域允许您在一个或多个视图容器中动态地加载和卸载视图,从而实现灵活的内容布局和管理。区域的用途动态内容加载:您可以将不同的视图加载到同一个区域中,这样可以实现在运行时动态改变应......
  • ".prisma/client/index-browser" is imported by ".prisma/client/index-browser?comm
    背景在nuxt3项目中使用prisma操作数据库。dev阶段可以正常运行,但是到了build时出现以上错误。分析由于npm的依赖采用扁平化管理,而pnpm并不适用扁平化管理,从而导致pnpm存在兼容性问题。最简单的办法是直接换掉pnpm,直接改成yarn或者npm。yarnpnpm仔细观察可以发现,没有.prisma......
  • 26-Prism和SPSS的显著性分析
      使用prism计算相关性,并绘制柱形图:示例:有4组数据,每组都有4个样本,这种单变量的多组数据之间的比较适用One-wayANOVA检验。若是双变量的多组数据则适用于TWO-wayANOVA检验。若是只有两组,适用于t-test检验。Grouplength1341321311312482......
  • PrismMVVM功能实现(通知、命令)
    常见的MVVM框架,基本围绕ICommand、INotifyPropertyChanged的封装实现绑定、通知等功能;而对于不同框架,在实现相同功能上,只是表现的形式有所不同,下图列举几种常见框架的功能区别:功能\框架PrismMVVMLightMicorsoft.Tookit.Mvvm通知BindableBaseViewModelBaseObservable......
  • Prism视图模型定位器(ViewModelLocator)
    视图模型定位器(ViewModelLocator)依照“标准命名约定”将视图(View)中的数据上下文链接到视图模型(ViewModel)的实例。自动绑定视图模型Prism视图模型定位器(ViewModelLocator)有一个AutoWireViewModel属性:当设置为true时,AutoWireViewModelChanged事件调用类中的ViewMod......
  • 一个wpf项目的搭建prism框架mvvm
    一个wpf项目的搭建prism框架mvvm简单prism项目:1.新建一个wpf的项目2.引入包:在nuget中,prism.DryIoc3.把空项目应用转化成Prism,把App基类Application改为PrismApplication,因为这个基类是分布类,其中app.xaml.cs基类改为PrismApplication,和xaml的标签,引入命名空间后改为<prism......
  • express开发api指南--集成ORM(prisma)
    9.1安装依赖#全局安装prismacnpminstallprisma-g#添加开发依赖cnpminstallprisma--save-dev#创建Prisma架构文件模板,设置PrismaORM项目npxprismainit#安装并生成PrismaClientcnpminstall@prisma/client-gcnpminstall@prisma/client--save9.2连......
  • 开源照片管理神器 PhotoPrism 安装和使用教程
    如今我们每个人都积累了海量的照片和视频,做自媒体的UP主们积累的照片和视频数量可能更多。面对这么多的照片和视频,我们该如何管理呢?之前我一直用谷歌相册,因为它有很多优势,比如无限空间,支持智能整理(按时间线、地理位置、还支持人脸自动合并)。但去年Google开始对空间进行了......