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 提供了一系 ...
随机推荐
- Android中广播接收者BroadcastReceiver详解
1. 接收系统的广播步骤 (1) 新建一个类继承BroadcastReceiver 以监听sd卡状态的广播接收者为例 public class SdCardBroadcastReceiver ext ...
- 爬虫入门(四)——Scrapy框架入门:使用Scrapy框架爬取全书网小说数据
为了入门scrapy框架,昨天写了一个爬取静态小说网站的小程序 下面我们尝试爬取全书网中网游动漫类小说的书籍信息. 一.准备阶段 明确一下爬虫页面分析的思路: 对于书籍列表页:我们需要知道打开单本书籍 ...
- 认识Js中的二进制数据
Blob 在项目中涉及到要对html原生的audio组件进行样式复写,因此需要重新实现audio的一些功能,比如下载.实现一个下载大致的思路是服务端返回一段音频的二进制数据,客户端将其存放在Blob中 ...
- 第4章 打包和构建 - Identity Server 4 中文文档(v1.0.0)
IdentityServer由许多nuget包组成. 4.1 IdentityServer4 nuget | github上 包含核心IdentityServer对象模型,服务和中间件.仅包含对内存配 ...
- Java开发笔记(二十六)方法的输出参数
前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...
- 做一个开源的小程序登录模块组件(token)
先了解下SSO 对于单点登陆浅显一点的说就是两种,一种web端的基于Cookie.另一种是跨端的基于Token,一般想要做的都优先做Token吧,个人建议,因为后期扩展也方便哦. 小程序也是呢,做成t ...
- JavaScript 的 4 种数组遍历方法: for VS forEach() VS for/in VS for/of
我们有多种方法来遍历 JavaScript 的数组或者对象,而它们之间的区别非常让人疑惑.Airbnb 编码风格禁止使用 for/in 与 for/of,你知道为什么吗? 这篇文章将详细介绍以下 4 ...
- 通过 docker 来搭建 Jenkins
mkdir /data/jenkins -p mkdir /data/jenkins/{conf,data} -p echo "Asia/Shanghai" > /data/ ...
- [HTML/CSS]colum-gap属性
属性定义及使用说明 column-gap的属性指定的列之间的差距. 注意: 如果指定了列之间的距离规则,它会取平均值. 语法 column-gap: length|normal; 值 描述 l ...
- H5的语义化标签(PS: 后续继续补充)
头部信息 <header></header> 区块标签 <figure> <figcaption>123</figcaption> < ...