Un autre gars de notre équipe m'a fourni une bibliothèque comme un pot pour son framework web. Appelons ce cadre «le cadre de mon ami».Programmation de motifs de conception: Façade ou non?
Il y a une classe particulière dont j'ai besoin de son cadre. La moitié des propriétés exposées par cette classe est ce dont j'ai vraiment besoin pour ma propre application. L'autre moitié n'est pas nécessaire. Pour récupérer les propriétés de cette classe, vous devez effectuer une manipulation de chaînes. Puisque je vais développer mon propre framework au-dessus de cette classe, je veux découpler autant que possible la dépendance. Peut-être qu'à l'avenir un autre de mes amis développera un meilleur cadre.
Donc ce que j'ai fait, c'est que j'ai généré une classe de façade pour cette classe. Mon propre framework accède aux propriétés à travers ma classe de façade. Si le "Cadre de mon ami" a changé, je dois juste changer une classe de façade et le reste reste le même. En outre, la manipulation de chaîne est effectuée à l'intérieur de la classe de façade. En outre, la classe de façade expose uniquement les propriétés nécessaires. Donc mon propre framework accède simplement aux propriétés en tant que getter/setter normal.
Cependant, j'ai eu une dispute avec ce type. Il me force à utiliser directement sa classe puisque d'abord il ne changera jamais l'implémentation de sa classe. Alors il me dit que l'écriture d'une classe de façade n'a vraiment aucune valeur. Mais je ne suis pas d'accord.
Je me trompe? Je crois que j'ai raison cependant.
"Il me force à utiliser directement sa classe". Comment? Est-ce qu'il tape du code pour vous? –
Je pense que vous avez raison. On dirait que vous êtes le développeur plus intelligent (si, peut-être, donné à faire un peu de travail supplémentaire pour vous-même). La réponse de hvgotcodes couvre tout ce que je pourrais dire. Nous enveloppons les API dans les classes d'adaptateurs tout le temps - la seule chose bizarre cette fois est que votre ami l'écrit. –
Oui, vous êtes essentiellement en train de coder une interface, puis d'écrire un adaptateur pour son composant. ça m'a l'air bien. cependant, (probablement en raison de la notion vague de "propriétés"), vous pourriez vouloir que l'interface soit plus que juste des getters et des setters ... juste une pensée .. – lijie