JS實現簡單的圖書館享元模式執行個體

來源:互聯網
上載者:User

JS實現簡單的圖書館享元模式執行個體

   本文執行個體講述了JS實現簡單的圖書館享元模式。分享給大家供大家參考。具體如下:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

<!DOCTYPE html>

<html>

<head>

<title>享員模式</title>

</head>

<body>

<script>

/*

*flyweight 享員模式

*/

//例子是一個圖書館存書借書 ->_->

var Book = function(id, title, author, genre, pageCount, publisherId, ISBN, checkoutDate, checkoutMember /*還有一些*/){

this.id = id;

this.title = title;

this.author = author;

this.genre = this.genre;

this.pageCount = pageCount;

this.publisherId = publisherId;

this.ISBN = ISBN;

/*...*/

this.checkoutDate = checkoutDate;

this.checkoutMember = checkoutMember;

};

Book.prototype = {

getTitle : function(){

return this.title;

},

getAuthor : function(){

return this.author;

},

getISBN : function(){

return this.ISBN;

},

/*__more.._*/

updateCheckoutStatus : function(booId,checkoutDate,checkoutMember){

this.id = bookId;

this.checkoutDate = checkoutDate;

this.checkoutMember = checkoutMember;

/*_more.._*/

}

};

//下面介紹享元的版本;PS(使用了一個OBJ存書籍,這樣就可以存多的書)

var BookFactory = (function(){

var existingBooks = {},existingBook;

return {

createBook : function(title,author,genre,ISBN){

existingBook = existingBooks[ISBN];

if(existingBook){

return existingBook;

}else{

var book = new Book(/*_moreData_bookInfo == _*/)

return existingBooks[ISBN] = book;

}

}

}

})();

var BookRecordManager = (function(){

var bookRecordDatabase = {};

return {

addBookRecord : function(id,ISNB/* == */){

var book = BookFactory.createBook(/**/);

bookRecordDatabase[id] = {

checkoutDate : checkoutDate,

checkoutMember : checkoutMember

};

},

updateCheckoutStatus : function(bookId,xx){

bookRecordDatabase[bookId] = {

xx : tt,

oo : yy

}

},

extend : function(){

/*自訂各種公用方法了*/

}

}

})();

</script>

</body>

</html>

  希望本文所述對大家的javascript程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.