設計模式複習 2 建立類模式

2022-05-13 21:02:37 字數 4164 閱讀 2893

定義

**

/**

* 單例模式-餓漢形式

* @author emma_zhang

* @date 2019/2/15

*/public class singletonforhunger

/** * 訪問例項

*/public static singletonforhunger getsingletonforhunger()

public static void dosomething()

}/**

* 單例模式-懶漢形式

** @author emma_zhang

* @date 2019/2/15

*/public class singletonforlazy

/** * 產生例項物件,必須要加同步,不然在多執行緒下可能出錯

* * @return 例項物件

*/public synchronized static singletonforlazy getsingletonforlazy()

return singletonforlazy;

}}

使用場景

定義通用原始碼

/**

* 抽象產品類

* @author emma_zhang

* @date 2019/2/18

*/public abstract class product

/** * 抽象方法

*/public abstract void method2();

}/**

* 具體產品類

** @author emma_zhang

* @date 2019/2/18

*/public class concreteproduct1 extends product

}/**

* 抽象工廠類

** @author emma_zhang

* @date 2019/2/18

*/public abstract class creator

/*** 具體工廠類

** @author emma_zhang

* @date 2019/2/18

*/public class concretecreator extends creator catch (exception e)

return (t)product;}}

/*** 場景類

** @author emma_zhang

* @date 2019/2/18

*/public class client

}

應用場景

擴充套件定義

通用原始碼

/**

* 抽象產品類

** @author emma_zhang

* @date 2019/2/19

*/public abstract class abstractproducta

/** * 共有的方法,但不同的實現

*/public abstract void dosomething();

}/**

* 產品a1的實現類

** @author emma_zhang

* @date 2019/2/19

*/public class producta1 extends abstractproducta

}/**

* 產品a2的實現類

** @author emma_zhang

* @date 2019/2/19

*/public class producta2 extends abstractproducta

}/**

* 抽象產品類

** @author emma_zhang

* @date 2019/2/19

*/public abstract class abstractproductb

/** * 共有的方法,但不同的實現

*/public abstract void dosomething();

}/**

* 產品b1的實現類

** @author emma_zhang

* @date 2019/2/19

*/public class productb1 extends abstractproductb

}/**

* 產品b2的實現類

** @author emma_zhang

* @date 2019/2/19

*/public class productb2 extends abstractproductb

}/**

* 抽象工廠

** @author emma_zhang

* @date 2019/2/19

*/public abstract class abstractcreator

/*** 產品等級1的實現

** @author emma_zhan

* @date 2019/2/19

*/public class creator1 extends abstractcreator

@override

public abstractproductb createproductb()

}/**

* 產品等級2的實現

** @author emma_zhang

* @date 2019/2/19

*/public class creator2 extends abstractcreator

@override

public abstractproductb createproductb()

}/**

* 場景類

** @author emma_zhang

* @date 2019/2/19

*/public class client

}

優點缺點

定義通用原始碼

/**

* 產品類-實現模板方法模式

** @author duogui.zq

* @date 2019/2/21

*/public class product

}/**

* 抽象建造者-規範產品的組建

** @author duogui.zq

* @date 2019/2/21

*/public abstract class builder

/*** 建造者 有多少個產品就有多少個建造者,這些產品類具有相同的介面或者抽象類

** @author duogui.zq

* @date 2019/2/21

*/public class concreteproduct extends builder

@override

public product buildproduct()

}/**

* 導演類

** @author duogui.zq

* @date 2019/2/21

*/public class director

}

定義通用原始碼:

/**

* 原型模式

** @author emma_zhang

* @date 2019/2/26

*/public class prototyprclass implements cloneable catch (clonenotsupportedexception e)

return prototyprclass;

}}

使用場景

注意事項

深拷貝和淺拷貝

深拷貝:完全的拷貝

深拷貝的例項

/**

* 深拷貝

** @author emma_zhang

* @date 2019/2/26

*/public class deepclone implements cloneable catch (clonenotsupportedexception ex)

return deepclone;

}}

設計模式(2) 建立型模式

對設計模式學了有一段的時間了,設計模式是軟體工程的基石,他是人們反覆使用的,程式設計師們幾十年的經驗總結,以 開放 封閉 單一職責 依賴倒轉 黎克特制代換 合成聚合復用 迪公尺特法則 介面隔離 為基本原則。本篇部落格我對建立型模式進行總結,其中包括 單例模式 工廠方法模式 抽象工廠模式 建造者模式 ...

Python實現設計模式 建立類設計模式

抽象工廠是什麼 抽象工廠是為了提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。例子我建立了乙個抽象工廠類,它的表現取決於我們選擇什麼工廠來初始化它。例子中,抽象工廠類是寵物店 petshop 它有乙個動作 show pet 用來展示動物,我們如果用貓 cat 初始化寵物店,展示時...

設計模式2 工廠模式(建立型模式)

今天折騰第二種設計模式 工廠模式。和單例模式一樣,工廠模式也是一種建立型模式。通俗一點的話來講,工廠模式的出現是為了讓開發人員使用統一的介面函式 工廠類 實現相關類的例項化,這些待例項化的類有彼此類似的結構或者功能,這樣開發人員就不用挨個去執行 new 操作,將具體的例項化 new 操作交給封裝好的...