C#深度学习の接口传参(interface)-----接口的妙用
一、接口可以干嘛
我们知道,接口的本质是一个约束规范,委托是方法纵向(形式上)的封装,接口是不同方法横向(广度)的封装
接口中不能有变量,但是可以有属性方法。常见的,我们可以用接口:
1、实现需求方的方法
2、接口作为参数,实现对不同类的解耦,下面是常见的男女类
public interface ISay
{
void Say();
} public class Man:ISay
{
public void Say()
{
Console.WriteLine("你好,我是男士!");
}
} public class Woman : ISay
{
public void Say()
{
Console.WriteLine("你好,我是女士!");
}
} public class Peole
{
public void Say(ISay iPeople)
{
iPeople.Say();
}
} class Program
{
static void Main(string[] args)
{
Man man = new Man();
Woman woman = new Woman();
Peole peole = new Peole();
peole.Say(man);
peole.Say(woman);
Console.ReadLine();
}
}
3、接口作返回值,返回一个实现了接口的对象,基本和上面的例子类似
二、接口可以传参(常用来做对外SDK)
下面以两种常见构型讲解
1、A工厂生产产品,B工厂代理,C工厂卖,于是我们:
public interface ITransfer
{
void Transfer(string msg);
} public class FactoryA
{
public ITransfer FacATransfer = null; public FactoryA()
{
product();
} public void product()
{
int produceNum=; Task.Factory.StartNew(()=>
{
while (true)
{
produceNum++;
FacATransfer?.Transfer(String.Format("来自FactoryA的第{0}个产品", produceNum));
Thread.Sleep();
}
});
} } public class FactoryB //中间商
{
public void ConnectInit(ITransfer transfer)
{
FactoryA factoryA = new FactoryA();
factoryA.FacATransfer = transfer;
} } public class FactoryC:ITransfer
{
public FactoryC()
{
FactoryB factoryB = new FactoryB();
factoryB.ConnectInit(this);
}
public void Transfer(string msg)
{
Console.WriteLine("为FactoryC生产,"+msg);
}
}
调用
class Program
{
static void Main(string[] args)
{
FactoryC factoryC = new FactoryC();
//FactoryD factoryD = new FactoryD();
Console.ReadLine();
}
}
2、工厂A生产,D直接代理
public class FactoryA
{
public ITransfer FacATransfer = null; public FactoryA()
{
product();
} public void product()
{
int produceNum=; Task.Factory.StartNew(()=>
{
while (true)
{
produceNum++;
FacATransfer?.Transfer(String.Format("来自FactoryA的第{0}个产品", produceNum));
Thread.Sleep();
}
});
} }
调用:
class Program
{
static void Main(string[] args)
{
//FactoryC factoryC = new FactoryC();
FactoryD factoryD = new FactoryD();
Console.ReadLine();
}
}
学习请加qq群:568055323
C#深度学习の接口传参(interface)-----接口的妙用的更多相关文章
- MxNet+R︱用R语言实现深度学习(单CPU/API接口,一)
MxNet有了亚马逊站台之后,声势大涨,加之接口多样化,又支持R语言所以一定要学一下.而且作为R语言的fans,为啥咱们R语言就不能上深度学习嘞~ -------------------------- ...
- 用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践
https://zhuanlan.zhihu.com/p/25928551 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类 ...
- [转] 用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践
转自知乎上看到的一篇很棒的文章:用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文 ...
- 深度学习框架:GPU
深度学习框架:GPU Deep Learning Frameworks 深度学习框架通过高级编程接口为设计.训练和验证深度神经网络提供了构建块.广泛使用的深度学习框架如MXNet.PyTorch.Te ...
- 一个可扩展的深度学习框架的Python实现(仿keras接口)
一个可扩展的深度学习框架的Python实现(仿keras接口) 动机 keras是一种非常优秀的深度学习框架,其具有较好的易用性,可扩展性.keras的接口设计非常优雅,使用起来非常方便.在这里,我将 ...
- 阶段2-新手上路\项目-移动物体监控系统\Sprint2-摄像头子系统开发\第2节-V4L2图像编程接口深度学习
参考资料: http://www.cnblogs.com/emouse/archive/2013/03/04/2943243.htmlhttp://blog.csdn.net/eastmoon5021 ...
- 【神经网络与深度学习】【Matlab开发】caffe-windows使能Matlab2015b接口
[神经网络与深度学习][Matlab开发]caffe-windows使能Matlab2015b接口 标签:[神经网络与深度学习] [Matlab开发] 主要是想全部来一次,所以使能了Matlab的接口 ...
- 【神经网络与深度学习】【python开发】caffe-windows使能python接口使用draw_net.py绘制网络结构图过程
[神经网络与深度学习][python开发]caffe-windows使能python接口使用draw_net.py绘制网络结构图过程 标签:[神经网络与深度学习] [python开发] 主要是想用py ...
- 调参侠的末日? Auto-Keras 自动搜索深度学习模型的网络架构和超参数
Auto-Keras 是一个开源的自动机器学习库.Auto-Keras 的终极目标是允许所有领域的只需要很少的数据科学或者机器学习背景的专家都可以很容易的使用深度学习.Auto-Keras 提供了一系 ...
随机推荐
- 信息摘要算法之三:SHA256算法分析与实现
前面一篇中我们分析了SHA的原理,并且以SHA1为例实现了相关的算法,在这一片中我们将进一步分析SHA2并实现之. 1.SHA简述 前面的篇章中我们已经说明过,SHA实际包括有一系列算法,分别是SHA ...
- 知其所以然~redis的原子性
原子性 原子性是数据库的事务中的特性.在数据库事务的情景下,原子性指的是:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节. 对于Redis而言,命 ...
- 行为驱动:Cucumber + Selenium + Java(四) - 实现测试用例的参数化
在上一篇中,我们介绍了Selenium + Cucumber + Java框架下的使用Tags对测试用例分组的实现方法,这一篇我们用数据表格来实现测试用例参数化. 4.1 什么是用例参数化 实际测试中 ...
- .Net高并发解决思路(附源码)
本文如有不对之处,欢迎各位拍砖扶正.另源码在文章最下面,大家下载过后先还原一下nuget包,需要改一下redis的配置,rabbitmq的配置以及Ef的连接字符串.另外使用的是CodeFirst,先u ...
- 【ASP.NET Core快速入门】(四)在CentOS上安装.NET Core运行时、部署到CentOS
下载.NET Core SDK 下载地址:https://www.microsoft.com/net/download/windows 第一步:Add the dotnet product feed( ...
- 磊哥测评之数据库SaaS篇:腾讯云控制台、DMC和小程序
本文由云+社区发表 作者:腾讯云数据库 随着云计算和数据库技术的发展,数据库正在变得越来越强大.数据库的性能如处理速度.对高并发的支持在节节攀升,同时分布式.实时的数据分析.兼容主流数据库等强大的性能 ...
- Linux svn checkout时候总报设备上没有空间
详细报错信息:svn: 不能打开文件“weibosearch2.0.0/.svn/lock”: 设备上没有空间 但是df -h查看磁盘[root@picdata-1-2 data]# df -h文件系 ...
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(9)- 从Parallel NOR启动
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Parallel NOR启动. 上一篇讲i.MXRT从Raw NAND启动的文章 从Raw NAND启 ...
- python数据包之利器scapy用法!
scapy介绍: 在python中可以通过scapy这个库轻松实现构造数据包.发送数据包.分析数据包,为网络编程之利器! scapy安装: pip install scapy ======> ...
- C#的多样性,new,sealed方法
class A{ public virtual void Display(){Console.WriteLine("A");} } class B:A{ public new vo ...