介面與類別:為什麼要使用介面?
物件導向程式設計中,在定義契約時常會爭論是使用介面還是抽象類別。類別提供繼承和方法實現,而介面只關注聲明行為。
介面的優勢
主要在下列情況下使用介面:
範例:使用介面實現多態性
考慮以下程式碼範例:
<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>
在此範例中,我們定義了一個介面 ILogInterface
,它指定了一個 WriteLog()
方法。 MyClass
和 MyOtherClass
實作該接口,但提供了自己 WriteLog()
的實作。然後,LogManager
可以接受並調用實現 ILogInterface
的任何物件上的 WriteLog()
,從而能夠以不同的行為從不同的來源進行日誌記錄。
為什麼不直接在類別中實作方法?
直接在類別中實作方法可以簡化程式碼,但它也會將客戶端程式碼與實作緊密耦合。如果您稍後決定更改實現,則需要搜尋和修改所有客戶端程式碼引用。介面提供鬆散耦合,允許您新增或變更實作而不會影響客戶端程式碼。
以上是介面與類別:什麼時候應該選擇介面來實現多態性與鬆散耦合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!