java - Why separation of interface and implementation? -
in production code see classes defined follows:
public interface somecomponent { // methods } public class somecomponentimpl implements somecomponent { // methods} public interface somecomponentv2 extends somecomponent { // methods } public class somecomponentv2impl extends somecomponentimpl implements somecomponent { // methods }
why in case want separate interface , implementation?
or put way, why bad have 1 base class, , let v2 extend/override v1 follows:
public class somecomponent { // methods } public class somecomponentv2 extends somecomponent { // override methods reimplementation // add new methods new features. }
it practice separate interface , implementation of class because can swap out classes.
imagine want test application depends on web-service bills every request. in addition have class performs real requests web-service, build class implements same interface returns fake data avoid generating costs every request.
every time inherit base-class there chance inherit behaviour don't want inherit. interface pure contract , gives freedom let choose base-class independently of described advantage.
Comments
Post a Comment