`
tulunta
  • 浏览: 359236 次
文章分类
社区版块
存档分类
最新评论

paip.使用继承机制来实现控制反转或依赖倒置

 
阅读更多

paip.使用继承机制来实现控制反转或依赖倒置


平时实现IOC时常使用INTERFACE来实现...总觉得写的代码复杂,又多...经过我的研究,可以使用继承机制来IOC..相比INTERFACE方式,代码更加的简装,更容易理解..

业务场景A:
用户注册user.reg() ,其中要实现增加帐户操作 Account.iniacc();

-----------类user---------------
public Account acc = new Account();
public void reg()
{

addUser();

acc.iniacc(uname);

}

-------------类Account ---------------
virtual public void iniacc(string uname)
{ }


界面调用 :
user uc = new user();
uc.reg();

业务场景B,需要复用 reg(),但是不需要账户操作;此时,可以新建一个类acc2,重写iniacc(),使其为空,不对账户操作..

-----------acc2---------------


public class acc2 : Account
{

override public void iniacc(string uname)
{

}
}


此时,界面调用可以注入acc2 ,这样在reg()中调用iniacc()就是acc2.iniacc()了.呵呵.:


user uc = new user();
uc.acc = new acc2();
uc.reg();


**********我的总结,相比interface方式,优点有下:

1. 代码量少,简洁
2. 可以有默认实现,只有必须重写的情况下再重写....如果用interface方式,则没有了默认实现..
3.仅对需要的方法进行重写,而interface方式,则要求强制实现上级类的所有方法...
4.更加的灵活..易于理解

分享到:
评论

相关推荐

    么下么鱼密码

    相关博文 PHP加密解密类(密文只有大小写字母和数字),支持中文加密 解密目前DEZEND工具不能够解密的zend加密php文件 如解密出现 [exception ...jsp中文支持不好,请高手能补充下 ...paip.PHP zend解密—以SHOPEX4.8.4为例

    C#截屏功能

    paip.截屏功能流程说明 点击"开始截屏", 出现MASC层将下边的窗口灰掉 鼠标光标变成十字状态 单击鼠标,出现截屏窗口 调整截屏窗口位置与大小 双击,退出截屏窗口,MASC层退出..鼠标光标正常化

    LiverCancerSeg:MICCAI 2019病理学大挑战-PAIP2019

    要使用该代码,用户需要预先安装一些软件包。 $ sudo apt-get install openslide-tools$ sudo apt-get install libgeos-dev$ pip install -r requirements.txt预处理:1.下载幻灯片并解压缩下载所有50张压缩的幻灯片...

    PAIP-开源

    PAIP(管道)是通用过滤器应用程序。 它使用插件来传输和转换数据。 它们可以嵌套,因此内部结构可能会变得非常复杂(非线性)。 命令行界面类似于编程语言,非常简单。

    paip-lisp:“人工智能编程范例”教科书的Lisp代码

    人工智能编程范例 这是Peter Norvig(1992)写的《人工智能程序设计范例:Common Lisp中的案例研究》一书的开放源代码存储库。 版权已归作者所有,作者已根据MIT许可在此处共享。 这本书 这本书有以下几种格式: ...

    paip-lisp-pt-br:Norvig的Traduçãopara oportuguêsdo“人工智能编程范例”

    Esserepositórioestáem desenvolvimento,Algumas partes podem aindanãoestarem traduzidas,或不存在官方比较的存储库。 s tradutor noloopestáestudandoinglês,禁止在est ud estudar o livro etambé...

    los:LFE 对象系统

    更严重的是,最初的实现将取自 Peter Norvig 的 PAIP 第 13 章以及在 Clojure 中实现的想法。为什么是面向对象的? 归咎于; 他让我这样做。 但在之前,有,所以我想它不能全部放在他的脚下。 Peter Norvig 说得...

    CSharpPAIP:彼得·诺维格(Peter Norvig)的《人工智能编程范例》中的某些程序到C#的移植

    C夏普PAIP 这个项目的目的是使用C#浏览我最喜欢的书之一,( 的各章。 为什么? 我认为C#基本上是一个Lisp,没有宏,语法不一致和太多特殊形式。 为了向我自己证明这一点,我将在各章中进行研究,看看静态类型是否...

    Paysandu Newtab-crx插件

    扩展的“ Paysandu SC New Tab”功能可用于导航Google Chrome和Microsoft Edge,而不是用于Chrome OS,Mac或Windows的操作系统。 国防部对国防部的修改,并补充了“站点偏爱”,“编辑地点”一词的质感。 使jáo seu...

    LearningRacket:学习球拍

    学习球拍Racket编程语言真是太神奇了! 我决定开始一个密集的自学课程以... 计算机程序的结构和解释(SICP) 人工智能编程(PAIP)的范例其他球拍库 -Racket中的一个简单IRC机器人Axio Framework -Racket的新生Web框架

Global site tag (gtag.js) - Google Analytics