JAVA設計模式-工廠模式
簡單工廠模式
介紹
簡單工廠模式就是定義一個工廠類,工廠類提供獲取實體的方法,方法會根據傳入的引數不同來回傳不同的實體,不同的實體基本都有共同的父類,對于下面的例子里面增加新的動物需要修改代碼,否則無法擴展,


代碼示例
/**
* 介面定義
*/
interface Animal {
void eat();
}
/**
* 實作類
*/
class Dog implements Animal{
public void eat() {
}
}
/**
* 實作類
*/
class Cat implements Animal{
public void eat() {
}
}
class AnimalFactory{
public static Animal createAnimal(String type){
if("Cat".equals(type)){
return new Cat();
} else if("Dog".equals(type)){
return new Dog();
}
return null;
}
}
工廠方法模式
介紹
工廠方法模式和簡單工廠模式區別,簡單工廠模式工廠類只有一個,工廠方法模式可能有一個或者多個,它們都是實作了相同介面的一組工廠類,


代碼示例
/**
* 介面定義
*/
interface Animal {
void eat();
}
/**
* 實作類
*/
class Dog implements Animal{
public void eat() {
}
}
/**
* 實作類
*/
class Cat implements Animal{
public void eat() {
}
}
/**
* 介面定義
*/
interface AnimalFactory {
Animal createAnimal();
}
/**
* 實作類
*/
class DogFactory implements AnimalFactory{
public Animal createAnimal() {
return new Dog();
}
}
/**
* 實作類
*/
class CatFactory implements AnimalFactory{
public Animal createAnimal() {
return new Cat();
}
}
抽象工廠模式
介紹
抽象工廠模式可以理解成創建工廠的工廠,每一個生成的工廠又可以按照工廠模式創建物件,這里面其實有一個產品族的概念,產品族是不同的一組產品等級結構的一組產品,還有產品等級結構等概念,這里就不過多展開了,抽象工廠模式可以理解為解決兩個維度組合產品的構造問題,取其中一個維度作為產品族,另一個維度作為產品族中的具體的多個產品,


代碼示例
interface Dog {
void eat();
}
class BlackDog implements Dog{
public void eat() {
}
}
class WhiteDog implements Dog{
public void eat() {
}
}
interface Cat {
void eat();
}
class BlackCat implements Cat{
public void eat() {
}
}
class WhiteCat implements Cat{
public void eat() {
}
}
interface AnimalFactory {
Dog createGog();
Cat createCat();
}
class WhiteAnimalFactory implements AnimalFactory{
public Dog createGog() {
return new WhiteDog();
}
public Cat createCat() {
return new WhiteCat();
}
}
class BlackAnimalFactory implements AnimalFactory{
public Dog createGog() {
return new BlackDog();
}
public Cat createCat() {
return new BlackCat();
}
}
小結
工廠方法模式只有一個抽象產品類,可以有多個具體的產品類去實作,工廠類類似,只有一個抽象的工廠類,可以有多個具體的工廠類去實作,每一個具體的工廠類只能創建一個具體的產品類的實體,
抽象工廠模式有多個抽象的產品類,每個抽象的產品類可以有多個具體的產品類去實作,但是只有一個抽象的工廠類,這個工廠類可以有多個具體的工廠類去實作,每個具體的工廠類可以創建多個具體的產品類的實體,
關注微信公眾號「平哥技術站」, 每日更新,在手機上閱讀所有教程,隨時隨地都能學習,
原文鏈接:https://monkey.blog.xpyvip.top/archives/java-she-ji-mo-shi---gong-chang-mo-shi
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/508976.html
標籤:Java
