> -- Сергей Губанов писал(а):
> 

Можно немножко усовершенствовать. Объект Scroller можно сделать не имеющим состояния синглетоном (обслуживающим все райдеры из своего модуля) если передавать райдер во все его методы:
## Код:
```
Scroller = POINTER TO ABSTRACT RECORD 
  (s: Scroller) MinPosition (r: Rider): LONGINT, NEW, ABSTRACT;
  (s: Scroller) MaxPosition (r: Rider): LONGINT, NEW, ABSTRACT;
  (s: Scroller) GetPosition (r: Rider): LONGINT, NEW, ABSTRACT;
  (s: Scroller) SetPosition (r: Rider; position: LONGINT), NEW, EMPTY
END;
```

Ведь вся эта информация всё равно целиком содержится в райдере.
То есть на один модуль фактически будет только один объект Scroller.