設計模式 工廠模式

2021-09-27 02:34:11 字數 2819 閱讀 7835

目錄

1、簡單工廠模式(又稱靜態工廠方法模式)

(1) 抽象產品(手機)

(2) 具體產品(小公尺、華為、oppo)

(3) 工廠類1

(4) 工廠類2

2、工廠方法模式

(1) 抽象產品(手機)

(2) 具體產品(小公尺、華為、oppo)

(3) 抽象工廠

(4) 具體工廠(小公尺、華為、oppo)

3、抽象工廠模式

(1) 抽象產品(手機)

(2) 具體產品(小公尺、華為、oppo)

(3) 抽象產品(電腦)

(4) 具體產品(dell、聯想)

(5) 抽象工廠

(6) 具體工廠

由三部分構成:抽象產品(具體產品共有的方法)、具體產品(繼承或實現了抽象產品)、工廠(生成具體產品的例項)。缺點是擴充套件性差。

public abstract class phone
public class xiaomi extends phone  

} public class huawei extends phone

} public class oppo extends phone

}

public class ******phonefactory  

} }

缺點:擴充套件性差,增加一種手機時,不僅需要新增乙個手機產品類,還需要修改createphone ();不同的產品需要不同額外引數的時候不支援。

public static t createphone(classclazz)  catch (exception e)  

return instance;

}

優點:增加一種手機時,不需要修改createphone ()

缺點:反射的效率問題;class.forname(clazz.getname()).newinstance()呼叫的是無參建構函式生成物件,它和new object()是一樣的性質,而工廠應該用於複雜物件的初始化 ,當需要呼叫有參的建構函式時便無能為力了;不同的產品需要不同額外引數的時候不支援。

由四部分構成:抽象產品(具體產品共有的方法)、具體產品(繼承或實現了抽象產品)、抽象工廠(具體工廠共有的方法)、具體工廠(繼承或實現了抽象工廠,負責返回具體產品的例項)。工廠方法模式不僅將產品抽象出來,而且將工廠也抽象出來。

優點:使乙個產品類的例項化延遲到其具體工廠類;當需求變化,只需要增刪相應的具體產品類和具體工廠類,不需要修改已有的類。而簡單工廠需要修改工廠類的createphone()方法。

缺點:引入抽象工廠層後,每次新增乙個具體產品類,也要同時新增乙個具體工廠類。

public abstract class phone
public class xiaomi extends phone  

} public class huawei extends phone

} public class oppo extends phone

}

public abstract class phonefactory
public class xiaomifactory extends phonefactory  

} public class huaweifactory extends phonefactory

} public class oppofactory extends phonefactory

}

由四部分構成:抽象產品(具體產品共有的方法)、具體產品(繼承或實現了抽象產品)、抽象工廠(具體工廠共有的方法)、具體工廠(繼承或實現了抽象工廠,負責返回具體產品的例項)。抽象工廠模式適用於多個產品族(手機為乙個產品族,電腦為另乙個產品族,也就是說有多個抽象產品)

public abstract class phone
public class xiaomi extends phone  

} public class huawei extends phone

} public class oppo extends phone

}

public abstract class computer
public class dell extends computer  

} public class lenovo extends computer

}

由四部分構成:抽象產品(具體產品共有的方法)、具體產品(繼承或實現了抽象產品)、抽象工廠(具體工廠共有的方法)、具體工廠(繼承或實現了抽象工廠,負責返回具體產品的例項)。抽象工廠模式適用於多個產品族(手機為乙個產品族,電腦為另乙個產品族,也就是說有多個抽象產品)

public abstract class itfactory
public class microsoftfactory extends itfactory  

@override

public computer createcomputer()

} public class ibmfactory extends itfactory

@override

public computer createcomputer()

}

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...