工廠模式定義 define an inte***ce for creating an object,but let subclasses decide which class to instantiate.factory method lets a class defer instantiation to subclasses.(定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類)
看乙個簡單的例子
//介面
public inte***ce car
//實現類
public class audiblackcar implements car
@override
public void gettire()
}
//實現類
public class audiredcar implements car
@override
public void gettire()
}
//實現類
public class audiwhitecar implements car
@override
public void gettire()
}
//抽象工廠類
public abstract class abstractca***ctory
//實現類
public class ca***ctory extends abstractca***ctory catch (exception e)
return (t)car;}}
//客戶端
public class client
}
以上就是乙個簡單的工廠模式,造不同顏色的車,比較清晰明了
1.良好的封裝性,**結構清晰。建立物件簡單只需要知道物件的類名就可以
2.比較容易擴充套件,增加產品的時候,只需要需改具體工廠類或者新增乙個工廠類就可以。
3.遮蔽產品類。產品如何變化,呼叫者不需要關心,只需要關心介面。
4.工廠類典型解耦框架。高層模組只需要知道產品的抽象類,其他不用關心。
1.需要靈活,可擴充套件框架時候可以考慮工廠模式
2.說白了工廠類就是new乙個物件的替代品。
1. 把上面例工廠類可以擴充套件為靜態方法
public class enhangeca***ctory catch (exception e)
return (t)car;}}
2. 把上面例子公升級多個工廠:目的是把所有產品放到乙個工廠方法裡面有可能結構不清晰。現在把生產每種顏色的車工廠都定義乙個創造者,讓呼叫者自己去選擇與那個工廠關聯。
主要**如下
//抽象類
public abstract class abstractenca***ctory
//實現類
public class audiblackca***ctory extends abstractenca***ctory
}
//實現類
public class audiredca***ctory extends abstractenca***ctory
}
//實現類
設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
設計模式 工廠設計模式
用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...
設計模式 工廠設計模式
工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...