工廠模式用於建立物件,根據不同的情況,建立不同的物件。
前期準備:
/**
* 飲料產品
*/public
inte***ce
drinkproduct
public
class
milkdrink
implements
drinkproduct
public
void
showname()
}
public
class
teadrink
implements
drinkproduct
public
void
showname()
}
簡單工廠,根據引數建立不同的物件。適用場景:需要建立的產品不多的時候,而且修改不頻繁。
public
class
drinkfactory
elseif(
"tea"
.equals
(type)
)else
}}
public
class
}
工廠方法模式跟簡單工廠模式的區別在於簡單工廠只有乙個工廠類,提供了乙個工廠方法,由入參決定生產那個產品,而工廠方法模式則定義乙個工廠介面,不同的產品工廠實現工廠介面,生產的產品由產品工廠決定。這樣減輕某乙個工廠生產多種產品的壓力。
public
inte***ce
drinkfactory
public
class
teadrinkfactory
implements
drinkfactory
}
public
class
milkdrinkfactory
implements
drinkfactory
}
public
class
}
使用靜態工廠,優點是:減輕壓力,同時實現開閉原則。工廠方法可以使用反射替換使用,不用硬程式設計。
抽象工廠有兩個概念:一、產品族:同一工廠生產的一組不同產品結構的一組產品。二、產品等級結構:產品生產產生不同型別。就比如有乙個代加工廠,要代加工多家公司的產品,都要生成手機電視,不過代生產多家的,比如小公尺家的和格力家的。這裡產品族指的的是都需要生產的手機電視。產品等級結構指的是代生產小公尺和格力。抽象工廠建立一族產品的方法,乙個方法對應乙個產品。
接上前面所說的,以飲料為例,假設飲料分成兒童型和**型。所以產品族就是兒童型飲料和**型飲料。
public
inte***ce
drinkfactory
上面的getchilddrink和getadultdrink就是乙個產品族。
public
class
milkdrinkfactory
implements
drinkfactory
@override
public drinkproduct createadultdrink()
}
public
class
teadrinkfactory
implements
drinkfactory
@override
public drinkproduct createadultdrink()
}
public
class
}
在增加產品等級的時候無需修改抽象,只需要增加實現就可以了,但是如果增加乙個產品族產品就需要該原來抽象工廠,這違背了開閉原則。
建造者模式也是乙個建立型模式,相比於工廠模式,建造者模式更關注於乙個複雜物件的建立過程。建造者模式將複雜的物件的建立與表示分離,使得同樣的構建過程可以建立不同的表示。
builder表示物件的各個組成部分構建方式。director負責制定裝配順序。下面以電腦為例。
生成物件有哪些屬性。
/**
* 電腦,擁有哪些屬性
*/public
inte***ce
icomputer
/**
* 聯想電腦
*/public
class
lenovocomputer
implements
icomputer
@override
public
void
showmemory()
@override
public
void
showstorage()
@override
public
void
setcpu
(string cpu)
@override
public
void
setmemory
(string memory)
@override
public
void
setstorage
(string storage)
}
生成屬性的構建方式
public
inte***ce
computerbuilder
public
class
lenovocomputerbuilder
implements
computerbuilder
@override
public
void
buildcpu()
@override
public
void
buildmemory()
@override
public
void
buildstorage()
@override
public icomputer buildcomputer()
}
組裝順序,組裝流程控制器:
public
inte***ce
computerdirector
public
class
lenovocomputerdirector
implements
computerdirector
}
結果
public
class
}
建造者模式將建立過程和物件屬性的表示分離開了,這樣方便對不同過程產生不同物件。 設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
設計模式 工廠設計模式
用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...
設計模式 工廠設計模式
工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...