一分鐘讀懂設計模式 工廠模式

2021-10-09 08:14:25 字數 2371 閱讀 3350

1具體的工廠類有乙個create的方法,利用if/switch返回具體產品2create方法通常時靜態,所以也叫靜態工廠。

缺點:擴充套件性差,要增加乙個產品,還需要修改工廠類方法

不同產品需要不同額外的引數時,不支援。

//麵條,最好都用介面

public inte***ce inoodles

public class lznoodles implements inoodles

}public class rgmnoodles implements inoodles

}public class ******noodlesfactory }}

解決了簡單工廠 : 不支援不同產品需要不同額外的引數。現在只要為自己產品新增引數就行,不影響其他

新增乙個產品時,需要改工廠方法的問題。現在只要新增乙個產品實現inoodles,乙個工廠實現noodlesfactory,再呼叫就好。

缺點:產品多,比較麻煩,需要增加好多產品的工廠類。

//麵條介面

public inte***ce inoodles

//產品--蘭州拉麵

public class lznoodles implements inoodles

}//產品--熱乾麵

public class rgmnoodles implements inoodles

}//工廠類介面

public inte***ce noodlesfactory

//熱乾麵工廠

public class rgmfactory implements noodlesfactory

}//蘭州拉麵工廠

public class lzfactory implements noodlesfactory

}//使用

lzfactory lzfactory = new lzfactory();

inoodles inoodles2 = lzfactory.createnoodles();

inoodles2.desc();

rgmfactory rgmfactory = new rgmfactory();

inoodles inoodles3 = rgmfactory.createnoodles();

inoodles3.desc();

抽象工廠一般是用在較複雜的,生產工廠交叉。

比如橫向對比,產品分產品a和產品b;縱向劃分,可以分產品1和產品2。

生產線1生產產品1,生產線2生產產品2。

//抽象產品a

public abstract class abstractproducta

//抽象產品b

public abstract class abstractproductb

//具體產品a1

public class concreteproducta1 extends abstractproducta

}//具體產品a2

public class concreteproducta2 extends abstractproducta

}//具體產品b1

public class concreteproductb1 extends abstractproductb

}//具體產品b2

public class concreteproductb2 extends abstractproductb

}//抽象共產

public abstract class abstractfactory

//具體工廠1--生產a1,b1

public class concretefactory1 extends abstractfactory

@override

public abstractproductb createproductb()

}//具體工廠2--生產a2,b2

public class concretefactory2 extends abstractfactory

@override

public abstractproductb createproductb()

}

總結:都是不用管如何建立具體產品,通過工廠去獲取就行。

一分鐘讀懂設計模式 單例模式

單例模式只允許建立乙個物件,因此節省記憶體,加快物件訪問速度。1.需要頻繁例項化然後銷毀的物件。2.建立物件時耗時長,耗資源,又經常用到的物件。3.頻繁訪問資料庫或檔案的物件 4.工具類物件 在類載入的時候不被初始化 不加synchronized執行緒不安全,加synchronized保證執行緒安全...

一分鐘讀懂設計模式 責任鏈模式

使用場景 責任鏈一般用於處理流程節點之類的實際業務場景中。責任鏈主要重在責任分離處理,讓各個節點各司其職。缺點 責任鏈如果很長,除錯比較麻煩。比如請假申請,組長只審批小於2天的假,否則交給主管審批,主管只審批小於5天的假,否則交給經理審批,由經理做決定。抽象 審批人,true 審批通過,false ...

設計模式一分鐘之Adapter

將兩個不相關的類組合在一起使用,需要用到adapter模式。乙個是adaptee,乙個是adapter。實際上,兩個不相關的類想要組合在一起使用,可以修改類的介面,但是,如果我們不想修改介面,或者根本沒有源 就需要使用adapter模式。實現方法 有兩種方法,組合composition 和 繼承in...