Да, примерно так, но обычно RefinedAbstraction не одна (как у вас), а несколько + можно желательно написать код в реализациях, а то не понятно, зачем два одинаковых класса, или вместо "//...код" написать "//...реализация1" и "//...реализация2" соответственно.
Может кто-нибудь поправит меня, а так идейно реализация правильная