欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 接口的使用(工厂模式)

程序员文章站 2022-04-08 17:18:06
接口(interface)与抽象类(abstract)的区别: 相同点: 1.都不能被直接实例化,都可以通过继承实现其抽象方法。 2.都是面向抽象编程的技术基础,实现诸多模式 不同点: 1.接口可以多继承,抽象类不能实现多继承。 2.接口只能定义抽象规则,抽象类既能定义抽象规则也能提供已实现的成员 ......

接口(interface)与抽象类(abstract)的区别:

相同点:

1.都不能被直接实例化,都可以通过继承实现其抽象方法。

2.都是面向抽象编程的技术基础,实现诸多模式

不同点:

1.接口可以多继承,抽象类不能实现多继承。

2.接口只能定义抽象规则,抽象类既能定义抽象规则也能提供已实现的成员

3.接口是一组行为规范,抽象类是一个不完全的类,着重于族的概念

4接口支持回调,抽象类不能实现回调,因为继承不支持。

5接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法,抽象类可以定义属性、字段、包含有实现的方法

6.接口可以作用于值类型和引用类型,抽象类只能作用于引用类型(例如:struct只能继承接口)

7.抽象类应主要用于关系密切的对象,而接口则是适合为不相关的类提供通用功能

8.接口着重于can—do关系类型,抽象类则偏重于is—a式关系。

9.接口多定义对象的行为,抽象类多定义对象的属性。

10.如果要设计小而简练的功能块,则使用接口,如果要设计大的功能单元,则使用抽象类

11.接口对应是面向对象编程思想的重要原则:面向接口编程,

12.抽象类对应则是设计模式的的精髓:面相抽象编程

 

接口与工厂模式简单demo:

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;

namespace test
{
class program
{
static void main(string[] args)
{

printfactory myfactory = new printfactory();
iprint myprint = myfactory.createprintb();
console.writeline(myprint.printdata("今天的太阳好棒"));

}
/// <summary>
/// 打印机接口
/// </summary>
interface iprint
{
string printdata(string data);
}
/// <summary>
/// a打印机 实现接口
/// </summary>
class printa : iprint
{
public string printdata(string data)
{
//可以进行业务处理 这里返回一句话方便识别
return "这是a";
}
}
/// <summary>
/// b打印机 实现接口
/// </summary>
class printb : iprint
{
public string printdata(string data)
{
//可以进行业务处理 这里返回一句话方便识别
return "这是b";
}
}
/// <summary>
/// 工厂类
/// </summary>
class printfactory
{
/// <summary>
/// 创建a打印机
/// </summary>
/// <returns></returns>
public iprint createprinta()
{
//返回a打印机
return new printa();
}
/// <summary>
/// 创建b打印机
/// </summary>
/// <returns></returns>
public iprint createprintb()
{
//返回b打印机
return new printb();
}
}
}
}