Interfaces et classes : Pourquoi utiliser des interfaces ?
En programmation orientée objet, il y a souvent un débat sur l'opportunité d'utiliser une interface ou une classe abstraite lors de la définition d'un contrat. Les classes fournissent l'héritage et l'implémentation de méthodes, tandis que les interfaces se concentrent uniquement sur la déclaration du comportement.
Avantages de l'interface
Les interfaces sont principalement utilisées dans les situations suivantes :
Exemple : Utiliser des interfaces pour réaliser le polymorphisme
Considérez l'exemple de code suivant :
<code>public interface ILogInterface { void WriteLog(); } public class MyClass : ILogInterface { public void WriteLog() { // 我的自定义日志记录实现 } } public class MyOtherClass : ILogInterface { public void WriteLog() { // 我的自定义和不同的日志记录实现 } } public class LogManager { public void Log(IlogInterface log) { // 接受并调用实现 ILogInterface 的任何对象上的 WriteLog(),允许动态绑定。 log.WriteLog(); } }</code>
Dans cet exemple, nous définissons une interface ILogInterface
qui spécifie une méthode WriteLog()
. MyClass
et MyOtherClass
implémentent cette interface, mais fournissent leur propre implémentation de WriteLog()
. LogManager
peut alors accepter et appeler ILogInterface
sur n'importe quel objet qui implémente WriteLog()
, permettant la journalisation à partir de différentes sources avec un comportement différent.
Pourquoi ne pas implémenter la méthode directement dans la classe ?
L'implémentation des méthodes directement dans la classe simplifie le code, mais elle couple également étroitement le code client à l'implémentation. Si vous décidez ultérieurement de modifier l'implémentation, toutes les références du code client devront être recherchées et modifiées. Les interfaces fournissent un couplage lâche, vous permettant d'ajouter ou de modifier des implémentations sans affecter le code client.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!