> Hello,
> I would like to write a software that supports extendibility i.e.
> plugins that interact with public API.
> Is there any kind of a design pattern that supports such idea ?
There's a pretty fundamental "design pattern" which will do: the
interface. Declare a plugin interface, which 3rd parties can write
implementations of.
i.e. you have something like:
public interface Plugin {
public int connectToChicken(int legs);
public int pollShatner(long kidneys);
public void close();
}
3rd parties then provide classes which implement this interface.
Also see 'delegation', and perhaps 'strategy pattern'. (Search the web
for these terms.)