<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>介面設計 on [Lou's lab]</title><link>/tags/%E4%BB%8B%E9%9D%A2%E8%A8%AD%E8%A8%88/</link><description>Recent content in 介面設計 on [Lou's lab]</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><copyright>Copyright ©2020 Lou</copyright><lastBuildDate>Mon, 30 Jun 2025 22:44:00 +0800</lastBuildDate><atom:link href="/tags/%E4%BB%8B%E9%9D%A2%E8%A8%AD%E8%A8%88/index.xml" rel="self" type="application/rss+xml"/><item><title>Effective Java Item 41：用標記介面定義類型</title><link>/posts/book/effective-java-item41/</link><pubDate>Mon, 30 Jun 2025 22:44:00 +0800</pubDate><guid>/posts/book/effective-java-item41/</guid><description>&lt;p>整理 &lt;strong>Effective Java&lt;/strong> 書中 Item 41: Use marker interfaces to define types 心得筆記&lt;/p>
&lt;h2 id="主旨">主旨&lt;/h2>
&lt;p>標記介面（Marker Interface）是沒有任何方法的介面，只是單純用來代表一個「型別」。雖然 Java 也可以用標註（annotation）來達到類似效果，但在要表示「某類型具備某種能力」時，還是推薦使用標記介面，因為它可以帶來更強的型別安全與語意明確性。&lt;/p></description></item><item><title>Effective Java Item21：設計介面要有前瞻性</title><link>/posts/book/effective-java-item21/</link><pubDate>Wed, 18 Jun 2025 22:30:00 +0800</pubDate><guid>/posts/book/effective-java-item21/</guid><description>&lt;p>整理 &lt;strong>Effective Java&lt;/strong> 書中 Item 21: Design interfaces for multiple inheritance 心得筆記&lt;/p>
&lt;h2 id="主旨">主旨&lt;/h2>
&lt;p>Java 8 引入了 &lt;code>default method&lt;/code>，終於讓介面可以新增方法而不會立刻讓現有的實作壞掉。但這個看似萬能的解法，其實潛藏不少風險，特別是對原本沒設計來支援這些方法的舊實作。這篇提醒你：設計介面時最好一開始就想清楚，因為事後「加東西」很可能會讓系統爆炸。&lt;/p>
&lt;h2 id="點出問題default-method-的魔法有限">點出問題：default method 的魔法有限&lt;/h2>
&lt;p>在 Java 8 之前，介面一旦公開出去，就幾乎不能再改。加一個新方法，所有實作都會爆錯。&lt;code>default method&lt;/code> 的出現，讓我們「表面上」可以擴充介面，不用動到原本的實作。&lt;/p></description></item></channel></rss>