This paper presents how the Strategy pattern has been used to build BAST, an
extensible object-oriented framework for programming reliable distributed
systems. Protocol composition plays a central role in BAST and
relies on the notion of protocol class. In this paper, we focus on the
recursive use of the Strategy pattern to overcome the limitations of
inheritance, when trying to flexibly compose protocols. In a companion
paper [6], we have presented how generic agreement protocol
classes can be customized to solve atomic commitment [10] and total
order multicast [20], which are central problems to transactional
systems and to group-oriented systems respectively. In [7], we
also show how BAST allows distributed applications to be made
fault-tolerant, by application programmers who are not necessarily skilled
in reliability issues.