C# 接口的使用(工厂模式)
接口(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();
//这里调用的B打印机
Iprint myPrint = myFactory.CreatePrintB();
//参数随便写,返回指定打印机方法(A打印机、B打印机)中的输出。
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();
}
}
}
}
执行效果:
这里调用的B打印机

C# 接口的使用(工厂模式)的更多相关文章
- 设计模式--工厂模式Factory(创建型)
工厂模式属于创建型模式,分为三类,简单工厂模式.工厂方法模式.抽象工厂模式. 一.简单工厂模式 在工厂中做判断,根据产品类型从而创造相应的产品,当增加新产品时需要修改工厂类. 例如: enum CTY ...
- 设计模式(3)--抽象工厂模式(Absrtact Factory Pattern)
定义 抽象工厂模式的实质就是提供接口来创建一系列相关或独立的对象而不指定这些对象的具体类. 理解 在软件系统中,经常面临着"一系列相互依赖的对象"的创建工作:同时由于需求的变化,往 ...
- C++设计模式——简单工厂模式
简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用 ...
- .NET设计模式: 工厂模式
.NET设计模式: 工厂模式(转) 转自:http://www.cnblogs.com/bit-sand/archive/2008/01/25/1053207.html .NET设计模式(1): ...
- 简单工厂模式 Simple Factory
简单工厂模式的作用就是定义一个用于创建对象的接口 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化. 先来看看它的组成: 1) 工厂类角色 ...
- 转--简单工厂模式 Simple Factory
简单工厂模式的作用就是定义一个用于创建对象的接口 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化. 先来看看它的组成: 1) 工厂类角色 ...
- 抽象工厂模式[wiki]
抽象工厂[编辑] 维基百科,自由的百科全书 跳转至: 导航. 搜索 以统一塑模语言中的类型图来表示抽象工厂 抽象工厂模式(英语:Abstract factory pattern)是一种 ...
- java设计模式---三种工厂模式之间的区别
简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他 ...
- 抽象工厂模式--java代码实现
抽象工厂模式 抽象工厂模式,对方法工厂模式进行抽象.世界各地都有自己的水果园,我们将这些水果园抽象为一个水果园接口,在中国.英国和美国都有水果园,种植不同的水果,比如苹果.香蕉和梨等.这里将苹果进行抽 ...
随机推荐
- MySQL技术内幕 InnoDB存储引擎(笔记)
1. InnoDB 体系架构 其中,后台程序主要负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据. 此外将已经修改的数据刷新到磁盘文件,同时保证在数据库发生异常的时候Innodb能恢复正常 ...
- Django 项目创建之前的环境搭建
安装虚拟管理环境 sudo apt install virtualenv 在项目中运行 virtualenv fruitenv 进入到环境中 source fruitenv/bin/activate ...
- Vue中的scoped及穿透方法
何为scoped? 在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组 ...
- Python_pickle模块操作二进制文件
import pickle b=7 i=13000000 fa=99.056 s='中国人民 123abc' lst=[[1,2,3],[4,5,6],[7,8,9]] tu=(-5,10,8) co ...
- 洛谷 P3177 树上染色 解题报告
P3177 [HAOI2015]树上染色 题目描述 有一棵点数为\(N\)的树,树边有边权.给你一个在\(0\) ~ \(N\)之内的正整数\(K\),你要在这棵树中选择\(K\)个点,将其染成黑色, ...
- vue 路由嵌套高亮问题
正常路由嵌套是没有问题的,但是如果你已经在当前主路由页面了,然后再次点击主路由就会出现页面数据空白的情况 看代码: //主路由通过v-for循环出来 <div class="list- ...
- 10个Python练手小程序,学习python的很好的资料
[程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列 ...
- @ExceptionHandler异常统一处理
之前处理工程异常,代码中最常见的就是try-catch-finally,有时一个try,多个catch,覆盖了核心业务逻辑 try{ .......... }catch(Exception1 e){ ...
- jQuery 素材 缩略图轮播集合
http://www.17sucai.com/pins/demo-show?id=27124 http://www.17sucai.com/pins/demo-show?id=4712 楼盘详情缩略 ...
- 浏览器中缓存Cache
在请求服务器资源时,服务器会将图片.网页文件等资源保存在客户端的临时文件夹中,称为缓存,当浏览器向服务器请求相同的资源时,如果与服务器版本一致,则从缓存读取 Cookie:服务器存放在 ...