如题,《Java与模式》中对这个模式有介绍,其目的是为了解决如下问题:存在某个接口A,类B要实现这个接口,但是又不想实现这个接口中的所有方法,所有又增加了个抽象类C implements接口A,再用B继承C,C就是一个适配器角色。我想既然类B中不想实现接口A中的所有方法,为什么不把接口A拆成多个接口。这个模式是否违反了接口隔离原则?
我用C#仿照它的例子写了一段代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DefaultAdapter { interface IFuckable { void functionOne(); void functionTwo(); } abstract class DefaultAdapter : IFuckable { public virtual void functionOne(){} public virtual void functionTwo() { } } class Client : DefaultAdapter { //only functionOne, no functionTwo public override void functionOne() { throw new NotImplementedException(); } } }
Client那个类不想实现全部的接口方法,中间加了个抽象类来解决这个问题,是不是很怪异呀。