面向介面程式設計的好處
阿新 • • 發佈:2019-01-10
面向介面程式設計就是面向抽象程式設計、面向規範程式設計,它帶來的最大的好處便是解耦、增強擴充套件性、遮蔽變化
舉例:非單例的情況,側重於強調[擴充套件性強]
//命令介面 public interface ICommand{ void doCommand(); } //命令1 public class Command1 implements ICommand{} //命令2 public class Command2 implements ICommand{} //命令執行器 public class CommandExecutor{ public void execute(ICommand command){ //略 } } //命令工廠 public class CommandFactory{ ICommand getCommand(string type){ //通過type查詢配置檔案,然後反射建立Command } } public class Client{ public static void main(String args[]){ CommandFactory f=new CommandFactory(); ICommand c1 = f.getCommand("1"); ICommand c2 = f.getCommand("2"); CommandExecutor ce = new CommandExecutor(); c.execute(c1); c.execute(c2); } }
CommandExecutor的execute方法不關心是傳過來的是什麼命令,只管執行。
增加新的命令實現類,對CommandExecutor沒有任何影響。
舉例二:單例時的情況 ,側重於強調[遮蔽變化]
1、最最常見的DAO模式,程式執行的時候針對一個DAO介面只有一個實現存在於jvm中,這種情況下雖然在執行時無法實現介面和實現的一對多關係,但當某天需要針對另一種資料庫進行移植的時候,只需要DAO的實現發生變化即可,呼叫DAO的Service層不用任何變化。
2、還有最最常用的Servlet,我們在編寫自己的Servlet程式的時候,用的是HttpServletRequest介面和HttpResponse介面而不是具體的實現,那麼我們的程式可以運行於Tomcat上,可以運行於Jetty上,可以運行於WebLogic上,而無需任何更改、變化。