18. 面向接口编程

1、面向接口编程:

  面向接口编程也就是使用“接口”来 实现动态多态性。面向接口的编程方式是面向对象设计的一个原则。层和层之间通过接口依赖,下层不是直接给上层提供服务,而是定义一组接口供上层(派生类?)调用。

2、有什么作用?

  答:实现系统代码级最大灵活与可扩展性的保证。

3、接口定义:

  (1接口泛指实体把自己提供给外界的一种抽象化对象,在 C# 中是完全抽象的一种约束,具体就是约束类的行为;
  (2命名规则:以 I 开头,动词+名词结尾;
  (3规则:接口可以弥补继承的单一性缺陷,接口只有方法属性索引事件的声明。

4、接口编程的建议:

  (1)面向抽象编程,使用抽象(接口、抽象类、父类)而不使用具体
  (2)编程时能使用接口就不使用抽象类,能使用抽象类就不使用类,能用父类的就不用子类;
  (3)避免定义 “体积庞大的接口”、“多功能接口”;
  (4)定义多个职责单一的接口进行组合使用。

5、抽象类和接口的区别

  (1)接口只能包含抽象方法,抽象类可以包含普通方法。
  (2)接口只能定义静态常量属性,抽象类既可以定义普通属性,也可以定义静态常量属性。
  (3)接口不包含构造方法,抽象类里可以包含构造方法。    
  (4)抽象类不能被实例化,但不代表它不可以有构造函数,抽象类可以有构造函数,被继承类扩充
  (5)接口是核心,定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做。
  (6)如果许多类实现了某个接口,那么每个都要用代码实现那些方法
  (7)如果某一些类的实现有共通之处,则可以抽象出来一个抽象类,让抽象类实现接口的公用的代码,而那些个性化的方法则由各个子类去实现。

  (8)抽象类不能实例化,必须通过继承由派生类来实现其抽象方法。如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类。
  所以,抽象类是为了简化接口的实现,他不仅提供了公共方法的实现,让你可以快速开发,又允许你的类完全可以自己实现所有的方法,不会出现紧耦合的问题。

6、抽象类和接口的使用

  (1)抽象类适用于同一系列中,并且有需要继承的成员;?
  (2)接口适用于不同系列的类具有相同的动作。?

 

posted @ 2017-10-05 10:47  LiuChangwei  阅读(197)  评论(0编辑  收藏  举报