c# - Is an interface can be used for common methods between class? -
i want have common method between many classes tasks. work i'm not sure it's acceptable.. example of 2 classes implement interface freeview() method:
class browserview : chromiumwebbrowser, iview { public void freeview() { // work } } class videoview : canvas, iview { public void freeview() { // work } }`
and call method in main module :
private object activeview = null; switch (settings.vue) { case vue.website: activeview = new browserview(this, settings.sourcepath); gridview.children.add(activeview browserview); break; case vue.video: activeview = new videoview(this, settings.sourcepath); gridview.children.add(activeview videoview); break; }
and when need call freeview() method, cast activeview
private void deleteview() { if(activeview != null) { ((iview)activeview).freeview(); } }
this usage of interface correct. however, should use iview
interface reference instead of object
in client avoid casting:
private iview activeview = null; // ... activeview.freeview(); // no casting here!
you can add 1 more iview
implementation nothing (null object
pattern) avoid null
check in code:
switch (settings.vue) { case vue.website: // ... case vue.video: // ... default: activeview = new emptyview(); }
so in client code can omit if(activeview != null)
nulltiy check.
Comments
Post a Comment