2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、創(chuàng)建型設(shè)計(jì)模式,,工廠方法模式 (factory method pattern)單例模式(singleton pattern)抽象工廠模式 (abstract factory pattern)生成器模式 (builder pattern)原型模式(prototype pattern),目錄,工廠方法模式,工廠方法模式實(shí)例:,采用new的if-else設(shè)計(jì),工廠方法模式,工廠方法模式實(shí)例(2):,客戶(hù)端代碼,工廠方法模式實(shí)

2、例(3):,8,單例模式,Singleton: a class that has only one instance,9,Singleton pattern,singleton: an object that is the only object of its typeensures that a class has at most one instanceprovides a global access point to that

3、 instancetakes responsibility of managing that instance away from the programmer (illegal to construct more instances)provide accessor method that allows users to see the (one and only) instancepossibly the most kn

4、own / popular design pattern! (this should tell you something),10,Restricting objects, continued,One way to avoid creating objects:use static methods insteadMath, System, JOptionPaneis this a good alternative choice?

5、 Why or why not?,Problem: lacks flexibilityExample: static methods can't be passed as an argument to a method, nor returnedProblem: cannot be extendedExample: static methods can't be subclassed and overridde

6、n like a singleton's could be,11,make constructor(s) private so that they can not be called from outsidedeclare a single static private instance of the classwrite a public getInstance() or similar method that all

7、ows access to the single instancepossibly protect / synchronize this method to ensure that it will work in a multi-threaded program,Implementing Singleton,12,Singleton sequence diagram,13,consider a singleton class Rand

8、omGenerator that generates random numberspublic class RandomGenerator { private static RandomGenerator gen = new RandomGenerator(); public static RandomGenerator getInstance() { return gen; }

9、 private RandomGenerator() {} ...}possible problem: always creates the instance, even if it isn't used,Singleton example,14,variation: don't create the instance until needed// Generates random numbers

10、.public class RandomGenerator { private static RandomGenerator gen = null; public static RandomGenerator getInstance() { if (gen == null) { gen = new RandomGenerator(); } re

11、turn gen; } ...}What could go wrong with this version?,Singleton example 2,15,variation: solve concurrency issue by locking// Generates random numbers.public class RandomGenerator { private static Rand

12、omGenerator gen = null; public static synchronized RandomGenerator getInstance() { if (gen == null) { gen = new RandomGenerator(); } return gen; } ...}Is anything wro

13、ng with this version?,Singleton example 3,16,variation: solve concurrency issue without unnecessary locking// Generates random numbers.public class RandomGenerator { private static RandomGenerator gen = null;

14、 public static RandomGenerator getInstance() { if (gen == null) { synchronized (RandomGenerator.class) { // must test again -- can you see why? // sometimes called tes

15、t-and-test-and-set (TTS) if (gen == null) { gen = new RandomGenerator(); } } } return gen; }},Singleton example 4,抽象工廠(Abstract Factory

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論