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 提供了一系 ...
随机推荐
- .net core 使用ConcurrentTest组件对方法进行压力测试
工欲善其事,必先利其器!在编写服务中首先要有一个好的测试工具,在dontecore下性能测试有BenchmarkDotNet,只需要简单的配置一下就可以对方法的性能进行详细的测试.但有时候需要对不同并 ...
- WebAssembly完全入门——了解wasm的前世今身
前言 接触WebAssembly之后,在google上看了很多资料.感觉对WebAssembly的使用.介绍.意义都说的比较模糊和笼统.感觉看了之后收获没有达到预期,要么是文章中的例子自己去实操不能成 ...
- Python实战171201筛选数据
Python应用:网络编程,系统网络运维,3D游戏开发,图形界面开发,科学与数字计算,web后端. 对着慕课的练习,果然慕课的实战也是差距很大-------centos7 -Python3.6.3 筛 ...
- 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(1)- 环境搭建(Python2.7.14 + PyAudio0.2.11 + Matplotlib2.2.3 + SpeechRecognition3.8.1 + pyttsx3 2.7)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生之环境搭建. 在写Jays-PySPEECH时需要先搭好开发环境,下表列出了开发过程中会用到的 ...
- ROS笔记1 安装及创建一个ROS Package
安装 跟着官方的安装指引来就行了.安装前要先确定自己的ros版本和ubuntu版本.这二者是一一对应的. http://wiki.ros.org/ROS/Installation 主要是package ...
- python学习笔记(十 四)、web.py
使用web.py 通过python进行网页的编写,下面我们来简单了解一哈web.py 的使用 1 url处理 使用特定的url结构来解析我们发送的请求.如下面所示: urls = ( '/login' ...
- 学习前端笔记1(HTML)
(注:此文是在看过许多学习资料和视频之后,加上自身理解拼凑而成,仅作学习之用.若有版权问题,麻烦及时联系) 标准页面结构: HTML发展历史: 注:每一种HTML需要有对应的doctype声明. H ...
- 【代码笔记】Web-CSS-CSS Border(边框)
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- #WEB安全基础 : HTML/CSS | 0x4.1嵌套列表
如果你认为列表只有ul和ol那你就错了 我要为你展示新的列表 这次只有一个index.html文件 这是它的效果 以下是它的代码 <html> <head> <title ...
- 使用 CODING 进行 Hexo 项目的持续集成
本文作者:CODING 用户 - 廖石荣 关于持续集成的概念 持续集成指的是,频繁地(一天多次)将代码集成到主干. 持续集成的过程 如图所示: CI 过程:代码编写 -> 源代码库(GitHub ...