C# 面向接口编程

面向接口编程就是将对象中的某个功能提取出来作为接口,而功能的具体实现则交由继承自这个接口的实现类处理。

面向接口的好处是降低程序的耦合性,当有新的功能时只需要对新功能进行编写,不需要修改已有的代码

下面是一个简单的范例:

1 1 //父类 2 2 public class Duck 3 3 { 4 4 protected IFlyBehaviour flyBehaviour; 5 5 //可以动态修改对象的某一功能的实现 6 6 public void SetDuckFly(IFlyBehaviour fb) 7 7 { 8 8 flyBehaviour = fb; 9 9 } 1010 public void DuckFly() 1111 { 1212 flyBehaviour.Fly(); 1313 } 1414 } 1515 1616 //小鸭子类,继承鸭子类 1717 public class LittleDuck : Duck 1818 { 1919 public LittleDuck() 2020 { 2121 flyBehaviour = new SlowFly(); 2222 } 2323 } 2424 2525 //大鸭子类,继承鸭子类 2626 public class BigDuck : Duck 2727 { 2828 public BigDuck() 2929 { 3030 flyBehaviour = new QuickFly(); 3131 } 3232 } 3333 3434 //飞行为的接口,只定义了飞行的方法而未实现 3535 public interface IFlyBehaviour 3636 { 3737 void Fly(); 3838 } 3939 4040 //实现快速飞的行为类,继承了飞行接口 4141 public class QuickFly : IFlyBehaviour 4242 { 4343 public void Fly() 4444 { 4545 Console.WriteLine("飞行速度非常快"); 4646 } 4747 } 4848 4949 //实现慢速飞行的行为类,继承了飞行接口 5050 public class SlowFly : IFlyBehaviour 5151 { 5252 public void Fly() 5353 { 5454 Console.WriteLine("飞行速度非常慢"); 5555 } 5656 }

假设作为父类的鸭子类Duck具有飞行的功能,继承自它的两个子类大鸭子BigDuck飞得快,小鸭子LittleDuck飞的慢,通过面向接口的方式进行实现,而通过父类Duck中的SetDuckFly()方法,我们还可以在程序运行过程中动态的去修改某一功能

执行:

11 BigDuck bigDuck = new BigDuck(); 22 bigDuck.DuckFly(); 33 44 LittleDuck littleDuck = new LittleDuck(); 55 littleDuck.DuckFly(); 66 77 littleDuck.SetDuckFly(new QuickFly()); 88 littleDuck.DuckFly();

结果:

11 飞行速度非常快 22 飞行速度非常慢 33 飞行速度非常快
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

java 07 接口

1.interface    接口2.接口中的成员修饰符固定  publicstaticfianl  //成员变量  只通过类访问   publicabstract    //成员函数   3.接口里所有的方法都是抽象的,抽象类中,可以没有抽象方法。  类与类继承,类与接口是实现的关系。降低耦合(高

java中多态的实现机制

多态的概念:  简单来说就是事物在运行过程中存在的不同状态,即父类或接口定义的引用变量指向子类或具体实现类的实例对象。程序调用方法在运行期才进行动态绑定,而不是引用变量的类型中定义的方法。多态存在的前提:1、存在继承关系,子类继承父类;2、子类重写父类的方法;3、父类引用指向子类对象。具体实例:1、定义一个父类:Animal

PHP开发APP接口1——APP接口简介

第1章APP接口简介1、APP接口介绍lPHP面向对象中的接口:就是用interface定义的抽象类如:<?php    interface video {        public function getVideos();        publ

Spring AOP 两种代理 Cglib、JDK

概念AOP:AOP是OOP(面向对象编程)的一种延续,OOP中继承的思想主要是提高代码的重用率,但是继承不能同个类在多个方法的相同位置出现的相同代码的问题JDK动态代理:AOP的一种实现,仅支持实现了接口的类。性能较好Cglib:AOP的一种实现,支持实现了接口的类和没有实现接口的类。对比JDK动态代理性能较差SpringAOP:结

C# 面向接口编程 - HelloWorld