接口定义了类的行为,但并不定义如何实现行为。需要一个类来实现接口定义的行为。
接口可以包括属性、方法和事件,接口的任何元素不需要设定访问权限,默认都是公开的。实现接口的类必须以public方式实现接口的所有元素。
显式实现:
接口可以显式实现,要使用显式实现的接口,客户端代码引用的必须是一个接口的实例而不能是接口实现类的实例即需要实现IInterface来进行函数调用。
多态:
一个类型的对象可以隐式表现为另一种不同类型的能力称为多态(polymorphism);即创建一个子类对象,使用父类引用进行调用。
自适应设计模式:
1、空对象模式 :
创建一个空类型UnllUser:IUser实现接口,接口函数不执行任何功能。(所有属性、方法都应该返回空对象);
IsNull属性反模式:给接口引入IsNull布尔属性,该接口的所有具体实现都返回false,只有接口的空对象返回true。IsNull模式让本营封装行为的对象暴露自身的逻辑,比如在客户端代码中引入If来区分真正的实现或者空对象实现,这违背了空对象模式设计的初衷:避免把自己的逻辑扩散到他的客户端代码中。
2、适配器模式:
适配器模式允许客户端提供一个接口的实例对象,而该对象并未真实实现这个接口,即适配器实现了客户端期望的接口,但接口的方法的具体实现另一个类的不同方法来完成。(一般用于类无法更改,目标类密封或无法获取代码)
实现方式:
1、类适配器模式
利用适配器集成,目标类的子类呗适配为客户端所期望的接口,子类继承父类的一个函数,子类新创建一个符合接口IUser接口的函数,在新函数中调用父类函数,实现适配器的功能。
2、对象适配器模式
对象适配器模式使用组合委托一个黑盒实例对象来实现接口的方法。即创建一个接口,使用适配器来实现接口,客户端调用接口实例实现功能。
3、策略模式
策略模式可以用于需要根据某个对象状态展示可变行为的类。如果类实例的行为会根据当前状态变化,此时使用策略模式封装这些可变行为。(创建不同接口实现实例,使用同一个接口引用,利用多态的原理)
4、更多模式
1、鸭子类型
2、混合类型
3、流接口