介面是實現多重繼承的途徑,而生成遵循某個介面物件的經典方式就是工廠方法設計模式。這種方式與直接呼叫建構函式的不同,我們在工廠物件呼叫的是建立方法,該工廠的方法將生成介面的某個實現類的物件。
理論上,通過這種方式,我們的**將完全與介面的實現分離,這就使得我們可以透明地將某個實現替換為另乙個實現。
下面我們來看看**
public
inte***ce
service
public
inte***ce
servicefactory
class serviceimplement1 implements service
@override
public
void
method2()
}class implements1factory implements servicefactory
}class serviceimplement2 implements service
@override
public
void
method2()
}class implements2factory implements servicefactory
public
class
testinte***cefactory
public
static
void
main(string args)
}
結果為:
serviceimplement1 method1
serviceimplement1 method2
serviceimplement2 method1
serviceimplement2 method2
通過上面程式,我們建立乙個工廠類servicefactory,其方法getservice()返回的是service介面的乙個實現類的物件。
如果不是用工廠方法,你的**就必須在某處指定將要建立的service的具體型別,以便呼叫合適的構造器
使用工廠方法的原因就是想要建立框架。
下面我們使用匿名內部類對上面的程式進行簡化,**會比較簡潔
public
inte***ce
service
public
inte***ce
servicefactory
class serviceimplement1 implements service
@override
public
void
method1()
@override
public
void
method2()
public
static servicefactory sf1=new servicefactory()
};}class serviceimplement2 implements service
@override
public
void
method1()
@override
public
void
method2()
public
static servicefactory sf2=new servicefactory()
};}public
class
testinte***cefactory
public
static
void
main(string args)
}
簡單工廠設計模式與工廠設計模式
工廠設計模式的目的 降低呼叫者和實現者之間的耦合度。當需求發生變化 增加或改變 時,不改變原有 的結構。1.簡單工廠設計模式 優點 降低了呼叫者和實現者之間的耦合度。當引入乙個新的實現型別時,只需要增加乙個實現類,然後修改工廠類即可。缺點 只適用於層次結構較為簡單的情況。如果可能的實現型別很多,工廠...
介面多型靜態工廠設計模式模板設計模式
1,介面 什麼是介面?介面就是乙個特殊的抽象函式,裡面的方法全部是public abstract型別的方法,必須全部進行重寫。為什麼要是用介面?可以多繼承成多實現,對公升級拓展很方便 如何使用介面?通過關鍵字inte ce來定義乙個介面,通過implements來實現介面。2,多型 什麼是多型?事物...
反射與工廠設計模式
工廠設計模式的一般格式 介面 實現對應介面的子類 工廠類通過反射技術改進的工廠,不再使用new關鍵字來例項化物件了 package com.reflect.factory.model inte ce ifruit ifruit class factory public static ifruit g...