1. Trang chủ
  2. » Công Nghệ Thông Tin

Software design: Lecture 36 - Sheraz Pervaiz

27 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Composite Design Pattern
Trường học Unknown University
Chuyên ngành Software Design
Thể loại Lecture
Thành phố Unknown City
Định dạng
Số trang 27
Dung lượng 477,87 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Software design - Lecture 36. The main topics covered in this chapter include: composite design pattern; motivation for composite design pattern; intend of composite design pattern; discussion on whole-part relation; tree structure revisited; composite pattern defined;...

Trang 1

Lecture : 36

Trang 2

Composite  Design Pattern

Trang 4

   To  have  a  common  interface  for  both  individual  and composite components so that client programs can view both  the  individual  components  and  groups  of components uniformly

Usually  a  Tree  structure  having  nodes  and  leave  nodes represents  composite  and  individual  components respectively. 

Trang 5

relation

Trang 8

Example

Trang 9

Aggregation Example

Trang 10

Tree Structure Revisited 

Trang 11

Discussion on Vector

Trang 12

Composite  Design  pattern  allow  us  to  compose 

objects into tree structures to represent whole­part  hierarchy    It  let  the  client  handle  the  composite  and individual components in a uniform manner

Trang 13

Pattern

Trang 15

Let  us  create  an  application  to  simulate  the Windows/UNIX  file  system.  The  file  system  consists mainly  of  two  types  of  components  —  directories  and files.  Directories  can  be  made  up  of  other  directories  or files,  whereas  files  cannot  contain  any  other  file  system component. In this aspect, directories act as nonterminal      nodes  and files  act  as  terminal  nodes or leaf  node of  a tree structure

Trang 16

Let us define a common interface for both directories and files  in  the  form  of  a  Java  interface   FileSystemComponent    The  FileSystemComponent interface declares methods that are common for both file components  and  directory  components.  Let  us  further define two classes — FileComponent and DirComponent 

—  as  implementers  of  the  common FileSystemComponent interface as shown in next slide

Trang 17

Class Diagram of Proposed Approach

Trang 18

FileComponent

        The  FileComponent  class  represents  a  file  in  the  file system  and  offers  implementation  for  the  following methods

getComponentSize()

• This  method  returns  the  size  (in  kilobytes)  of  the  file represented by the File­ Component object

Trang 19

DirComponent

    This class represents a directory in the file system. Since directories  are  composite  entities,  the  DirComponent provides methods to deal with the components it

    contains. These methods are in addition to the common getComponentSize  method  declared  in  the FileSystemComponent interface

Trang 20

addComponent(FileSystemComponent)

This method is used by client applications to add different DirComponent  and  FileComponent  objects  to  a DirComponent object

getComponent(int)

The DirComponent stores the other FileSystemComponent objects  inside  a  vector.  This  method  is  used  to  retrieve one such object stored at the specified location

Trang 21

getComponentSize()

This  method  returns  the  size  (in  kilobytes)  of  the  directory  represented  by  the  DirComponent  object.  As  part  of  the  implementation,  the  DirComponent object iterates over the collection 

of FileSystemComponent objects it contains, in a recursive  manner,  and  sums  up  the  sizes  of  all  individual  FileComponents.  The  final  sum  is  returned as the size of the directory it represents.

Trang 22

A  typical  client  would  first  create  a  set  of FileSystemComponent  objects  (both  DirComponent  and FileComponent instances). It can use the addComponentmethod  of  the  DirComponent  to  add  different FileSystemComponents  to  a  DirComponent,  creating  a hierarchy of file system (FileSystemComponent)

objects

Trang 23

When the client wants to query any of these objects for its size, it  can  simply  invoke  the  getComponentSize  method.  The  client  does not have to be aware of the calculations involved or the  manner  in  which  the  calculations  are  carried  out  in  determining  the  component  size.  In  this  aspect,  the  client  treats both the

FileComponent  and  the  DirComponent  object  in  the  same  manner. No separate code is required to query FileComponent  objects and DirComponent objects for their size.

Trang 24

 Client to keep track when calling a non­common  method like addcomponent and getcomponent as  these methods exists only in DirComponent

Trang 25

Provide  the  same  advantage  of  allowing  the  client application  to  treat  both  the  composite  DirComponent and  the  individual  FileComponent  objects  in  a  uniform manner while invoking the getComponentSize method

Trang 27

Code in Word File

Ngày đăng: 05/07/2022, 14:08