8
votes

Pourquoi "des motifs de conception" dis-il "deux objets du même type n'ont-t-il besoin que de partager une partie de leurs interfaces"?

à la page 13 Dans le livre GOF, il y a une déclaration:

Two objects of the same type need only share parts of their interfaces.


1 commentaires

«Interfaces» comme nous le connaissons maintenant n'étaient pas dans un usage généralisé à l'époque. Peut-être que GOF signifiait simplement que 2 objets de la même classe devraient se limiter aux méthodes de classe exposées.


3 Réponses :


-1
votes

Je ne sais pas ce que cela signifie car je n'ai pas le livre. Mais une interface est la méthode des signatures de la classe, combinées aux variables publiques. En tant que sous-type d'un type particulier, est également un type de sa classe mère, il peut avoir des méthodes que le parent ne possède pas, mais ne partage donc qu'une partie de l'interface du parent. Je n'ai aucune idée si c'est en fait ce que cela parlait cependant.


0 commentaires

8
votes

Dans leur langue, un objet interface em> est le contrat public complet de l'objet (ne pensez pas la mise en œuvre de la langue ici).

L'ensemble de toutes les signatures définis par un objet est appelé l'interface forte> à l'objet. p> blockQuote>

a type em> est plus comme ce que vous penseriez comme une interface déclarée ... p>

A TYPE FORT> est un nom utilisé pour désigner une interface particulière. P> blockQuote>

Imagine: P>

public class Foo : IBar, IBaz {}

public class Fuz : IBar, IBuz {}


1 commentaires

Ouais, c'est probablement exactement ce que signifiait là-bas, votre réponse est très claire



1
votes

Un devis plus complet est:

Un type est un nom utilisé pour désigner une interface particulière. Nous parlons d'un objet comme ayant la "fenêtre" de type si elle accepte toutes les demandes de Opérations définies dans l'interface nommée "fenêtre". Un objet peut Avoir de nombreux types et des objets largement différents peuvent partager un type. Partie d'une interface d'un objet peut être caractérisé par un type, et d'autres parties par d'autres types. Deux objets du même type n'ont besoin que de partager parties de leurs interfaces. Les interfaces peuvent contenir d'autres interfaces comme sous-ensembles.

Et assez clairement, je pense que cela parle de multiples héritage. Par exemple, vous pourriez avoir textwindow et menuWindow que la sous-classe fenêtre avec d'autres classes. Les deux objets peuvent être pris en compte, dans le sens où ils utilisent, pour avoir "type" fenêtre , et ils implémenteront les opérations associées à ce type - ils auront tous les deux fenêtre Méthodes. mais textwindow peut également sous-classement texteditor tandis que MENUWINDOW ne fait pas, donc leur ensemble total de méthodes (ce qu'ils veulent dire par "Interface") ne sont pas identiques, même si la fenêtre Windows chevauche.

http://www.uml.org.cn/c++/pdf/ DesignPatterns.pdf


0 commentaires