I think that it's useless to define this method as abstract.
To avoid code duplication, you can rewrite it:
```
public function send()
{
   $args = func_get_args();
   array_walk($args, function(& $arg) { $arg = escapeshellarg($arg); });
   return $this->getAdapter()->system(call_user_func_array('sprintf', array($this->getCommand()) + $args));
}

public abstract function getCommand();
```
And in subclass, just define `getCommand()`:
```
public function getCommand()
{
   return 'growlnotify --title %s --name atoum --message %s --image %s';
}
```