2010-10-20 6 views
1

J'ai récemment essayé d'apprendre les principes de conception de base et l'OCP m'a un peu confus. Il est logique que lorsqu'un changement se produit, il est préférable d'étendre le système plutôt que de modifier les parties existantes et fonctionnelles. Mais n'est-ce pas plus un principe sur la façon de mettre en œuvre des changements dans un système plutôt que sur la façon d'en concevoir un? Tout le code n'est-il pas fondamentalement ouvert à l'extension en utilisant le sous-classement? Et comment tout code peut-il être fermé pour modification? Cela ne dépend-il pas simplement de la façon dont la personne qui met en œuvre un changement choisit de l'utiliser? Peut-être un exemple de code qui ne suit pas l'OCP et comment exactement il a violé le principe serait le plus utile pour moi de le comprendre.Comment écrire du code conforme à l'OCP?

Merci

+3

Heh. Je ne l'ai jamais entendu appelé "l'OCP" auparavant. Cela ressemble à une chanson de rap: "Votre programme est-il en baisse avec le O.C.P.?". – Ken

Répondre

0

Un exemple typique serait une logique branches sur le type de choses. Cela signifie que chaque fois que vous devez ajouter un nouveau type, vous devez modifier ce code. L'utilisation de fonctions virtuelles signifie que vous pouvez simplement ajouter de nouvelles classes pour de nouveaux types sans modifier le code existant.

Open Closed Principle (PDF)

Il y a des exemples de code là-dedans.

Questions connexes