Object-Oriented Analysis and Design

Design Patterns
Introduction to Design Patterns

Week #9 Jarungjit Parnjai

Burapha University, 2001

Object-Oriented Analysis and Design

Lecture Outline
• • • • • What is A Pattern? Why Patterns? Software Patterns GoF Design Patterns Singleton (Object Creational Design Patterns)

Burapha University, 2001

Object-Oriented Analysis and Design

What is A Pattern?
• A Pattern
• ถูกใช้ ในงานของสถาปนิก ชื่อ Christopher Alexander • Alexander ศึกษาแนวทางการปรับปรุงกระบวนการออกแบบ อาคาร และสิ่ งก่อสร้ าง • “Each pattern is a three-part rule, which expresses a relation between a certain context, a problem and a solution.” • definition : • “A solution to a problem in a context”

Burapha University, 2001

Object-Oriented Analysis and Design A Solution to a Problem in a Context • Context • Problem • สถานการณ์ ที่เกิดปัญหาการออกแบบขึน ้ • ปัญหาทีเ่ กิดขึนซ้าๆ กันใน Context ้ • Solution • แนวทางการแก้ปัญหาทีพสูจน์ แล้วว่ าใช้ งานได้ จริง ่ ิ • ระบุส่วนผสมขององค์ ประกอบเพือสร้ างความสมดุลของแนว ่ ทางการแก้ปัญหา Burapha University. 2001 .

2001 .” • นักออกแบบที่เชี่ยวชาญนาใช้ Solution ที่สามารถทางานได้ ผลในอดีต กลับมาใช้ ไหม่ • โครงสร้ างของระบบเชิงวัตถุทดจะมี Pattern ของ Class และ Object ี่ ี เกิดขึนซ้าแบบเดิม ้ • ความรู้เกียวกับ Pattern ที่สามารถทางานได้ ผลในอดีต ทาให้ นัก ่ ออกแบบระบบสามารถทางานได้ อย่ างมีประสิ ทธิผล และทาให้ เกิด ความยืดหยุ่นในการออกแบบ และนามาใช้ ใหม่ Burapha University.Object-Oriented Analysis and Design Why Patterns? • Erich Gamma • “Designing object-oriented software is hard and designing reusuable object-oriented software is even harder.

2001 .Kent Back และ Grady Booch ให้ การสนับสนุน meeting ครั้ง แรกของ Hillside Group • 1994 .CunningHam และ Beck ใช้ แนวคิดของ Alexander ใน การพัฒนา Pattern Language สาหรับ Smalltalk • 1990 .GoF ตีพมพ์หนังสื อ “Design Pattern” ิ Burapha University. Helm.Gang of Four (Gamma. Johnson และ Vlissides .Object-Oriented Analysis and Design Software Patterns History • 1987 .จัดประชุ ม Pattern Languages of Programs (PLoP) ครั้งแรก • 1995 . GoF) เริ่มต้ นรวบรวม catalog ของ design pattern • 1991 .Bruce Anderson จัด Patterns Workshop ครั้งแรกขึนที่ ้ OOPSLA • 1993 .

Object-Oriented Analysis and Design Types of Software Patterns • • • • • • Analysis Design Organizational Process Project Planning Configuration Management Burapha University. 2001 .

inheritance and aggregation. Classes. 2001 .Object-Oriented Analysis and Design Types of Software Patterns • Software Pattern 3 ประเภท (Riehel และ Zullighoven) • Conceptual Pattern • Pattern whose form is described by means of terms and concepts from the application domain. • Design Pattern • Programming Pattern • Pattern whose form is described by means of software design constructs such as objects. • Pattern whose form is described by means of programming langugage Burapha University.

hash table. etc. Burapha University.Object-Oriented Analysis and Design Design Patterns Levels of Abstraction • Complex design for an entire application or subsystem • Solution to a general design problem in a particular context More Abstract More Concrete • Simple reusable design class such as a linked list. 2001 .

Object-Oriented Analysis and Design GoF Classification of Design Patterns • GoF Design Patterns อยู่ในตรงกลางของ Levels of Abstraction • “ A design pattern names. 2001 . abstracts.” Burapha University. and identifies key aspects of a common design structure that makes it useful for creating a reusable object-oriented design.” • GoF Design Pattern • “description of communicating objects and classes that are customized to solve a general design problem in a particular context.

what the pattern applies to • Class Patterns เน้ นความสั มพันธ์ ระหว่ าง Class และ Subclass ซึ่ง เกียวข้ องกับการนา Inheritance กลับมาใช้ ใหม่ ่ • Object Patterns เน้ นความสั มพันธ์ ระหว่ าง Object ซึ่งเน้ นการนา Composition กลับมาใช้ ใหม่ Burapha University.Object-Oriented Analysis and Design GoF Design Patterns • Purposes .what a pattern does • Creational Patterns เกียวกับกระบวนการสร้ าง Object ่ • Structural Patterns เกียวกับโครงสร้ าง และองค์ ประกอบของ Class ่ และ Object • Behavioral Patterns เกียวกับปฏิสัมพันธ์ ระหว่ าง Class และ Object ่ • Scope . 2001 .

2001 .Object-Oriented Analysis and Design GoF Design Patterns Purpose Scope Class Creational Factory Method Structural Adapter Behavioral Interpreter Template Method Object Abstract Factory Builder Prototype Singleton Abstract Bridge Composite Façade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Memento State Strategy Burapha University.

Template Method. Command • Dependence on h/w and s/w platforms • Abstract Factory. Visitor Burapha University. Bridge. Memento. Strategy. Iterator. 2001 . Proxy • Algorithm Dependencies • Builder. Factory Method. Bridge • Dependence on object representations or implementations • Abstract Factory.Object-Oriented Analysis and Design Design for Change • Creating an object by specifying a class explicitly • Abstract Factory. Prototype • Dependence on specific operation • Chain of Responsibility.

Decorator. Mediator. Observer • Extending functionality of subclassing • Bridge. Command. Observer. Chain of Responsibility. Composite. Bridge. Chain of Responsibility. 2001 . Strategy • Inability to alter classes conveniently • Adapter. Façade. Visitor Burapha University. Decorator.Object-Oriented Analysis and Design Design for Change (Continued) • Tight Coupling • Abstract factory.

Object-Oriented Analysis and Design GoF Essential Elements of Design Patterns • Pattern Name • ชื่อสั้ น และมีความหมาย เอือประโยชน์ ในการสื่ อสารภายในทีมผู้พฒนา ้ ั • Problem • problem และ context ที่ใช้ ใน Pattern นี้ • เงื่อนไขทีต้องมีก่อนที่จะใช้ Pattern นี้ ่ • Solution • คาอธิบายของ Element ที่ประกอบเป็ น Design Pattern • เน้ นที่ relationship responsibilities และ collaboration • ไม่ ใช่ concrete design หรือการ implemenation แต่ เป็ น abstract description • Consequences • Pros และ Cons ของการใช้ pattern ซึ่งรวมถึงผลกระทบต่ างๆ Burapha University. 2001 .

Object-Oriented Analysis and Design GoF Pattern Template • Pattern Name และ Classification • ชื่อสั้ น และมีความหมาย สาหรับ Pattern และ ประเภทของ Pattern • Intent • ประโยคสั้ นๆ ที่อธิบายหน้ าทีการทางานของ pattern ่ • Also Known As • ชื่ออืนทีเ่ ป็ นทีรู้จักของ Pattern นี้ ่ ่ • Motivation • สถานการณ์ ทใช้ ในการจาลองเหตุการณ์ ทนา Pattern ไปใช้ ประโยชน์ ี่ ี่ • Applicability • แนวทาง และ เทคนิคสาหรับการ implement Burapha University. 2001 .

Object-Oriented Analysis and Design GoF Pattern Template (Continued) • Structure • การนาเสนอ pattern โดยใช้ รูปภาพ • Participants • Class และ Object ที่มีส่วนร่ วมใน pattern นี้ • Collaborations • การปฏิสัมพันธ์ ระหว่ าง participant เพือทาหน้ าทีที่ตัวเองมี ่ ่ responsibilities • Consequences • Pros และ Cons ของการเลือกใช้ Pattern นี้ • Implementation • แนวทาง และ เทคนิคสาหรับการ implement Burapha University. 2001 .

Object-Oriented Analysis and Design GoF Pattern Template (Continued) • Sample Code • ส่ วนของ Code ที่เป็ นตัวอย่ างสาหรับการ implement • Known Uses • ตัวอย่ างของ Pattern ในระบบที่มีการใช้ งานจริง • Relatted Patterns • Patterns อืนทีใกล้เคียงกับ Pattern นี้ ่ ่ Burapha University. 2001 .

Object-Oriented Analysis and Design Singleton Design Pattern Burapha University. 2001 .

2001 . ทีอยู่ของสานักงานใหญ่ . ข้ อมูลการจด ่ ่ ทะเบียนของบริษัท และสามารถนาข้ อมูลเหล่านั้นมาแสดงผ่ านทาง application interface และพิมพ์รายงาน • ข้ อมูลต่ างๆ ควรเก็บอยู่ในทีใดทีหนึ่งภายใน application แต่ สามารถ ่ ่ ถูกนาไปใช้ โดยวัตถุทแตกต่ างกัน หลายๆ วัตถุ ี่ Burapha University.Object-Oriented Analysis and Design Singleton • Case Study • พิจารณาบริษัทแห่ งหนึ่งต้ องการพัฒนาระบบ ทีต้องการเก็บข้ อมูล ่ ต่ างๆ เกียวกับบริษัทได้ แก่ ชื่อ.

Object-Oriented Analysis and Design Singleton • First Design approach : • อาจออกแบบให้ สร้ าง global data ภายใน ทีสามารถเข้ าถึงได้ จากวัตถุ ่ ใดๆภายนอก • ละเมิดกฏของ Encapsulation • การเปลียนแปลงใดๆทีเ่ กิดขึนกับโครงสร้ างข้ อมูลทีเ่ ป็ น global data มี ่ ้ ผลกระทบถึงวัตถุทเี่ รียกใช้ ข้อมูลเหล่านั้น Burapha University. 2001 .

CompanyAddress . 2001 .Object-Oriented Analysis and Design Singleton • Second Design approach : Company .CompanyName .CompanyRegistrationNumber + getCompanyDetails() • วัตถุใดๆ ทีต้องการเรียกใช้ วัตถุ “Company” ต้ องรู้ Object Identifier ่ (อาจอยู่ ในรูปของตัวแปรอ้างอิง) ไปยังวัตถุ • Object Identfier ต้ องประกาศให้ เป็ น global • ละเมิดกฏของ Encapsulation!!! Burapha University.

} public String getCompanyName() { return name. } public String getCompanyAddress() { return address. private String regNumber. } public String getCompanyRegistrationNumber() { return regNumber.Object-Oriented Analysis and Design Singleton • Second Design approach : public class Company { private String name. address = a. public Company(String n. String r) { name = n. 2001 . String a. } } Burapha University. private String address. regNumber = r.

2001 .CompanyInstance : Company .CompanyRegistrationNumber : int + getCompanyInstance( ) : Comapany + getCompanyDetails() : String • คลาส “Company” มีเพียง instance เดียวเท่ านั้น • ใช้ Class Operation (Static Operation ในจาวา) ในการเข้ าถึง Object Identifier Burapha University.CompanyAddress : String .CompanyName : String .Object-Oriented Analysis and Design Singleton • Third Design approach : Company .

". Ltd. } public String getCompanyRegistrationNumber() { return regNumber. } public static Company getCompanyInstance() { return instance. "Burapha Unviersity". private String address. regNumber = r. private Company(String n. "99999"). address = a. } public String getCompanyAddress() { return address. 2001 } . } public String getCompanyName() { return name. private String name. String r) { name = n.. } Burapha University. String a. private String regNumber.Object-Oriented Analysis and Design Singleton • Third Design approach : public class Company { private static Company instance = new Company("Company.

println("null!!!").getCompanyInstance().getCompanyRegistrationNumber()+"\n").out. } else { System.getCompanyAddress()). System.println(instance1. System.out. 2001 .Object-Oriented Analysis and Design Singleton • Third Design approach : public class TestCompany { public static void main(String[] args) { Company instance1 = Company.println(instance1.out.getCompanyName()). if (instance1 == null) { System. System.println(instance1).out. System. } Burapha University.out.println(instance1.out.println("not null!!!").

println(instance2.Object-Oriented Analysis and Design Company instance2 = Company.println(instance2).getCompanyRegistrationNumber()).getCompanyName()). System.println(instance2. } } } Burapha University.getCompanyAddress()).println(instance2.out.out. System.out. System. System.out.out.println("null!!!"). } else { System. 2001 . if (instance2 == null) { System.println("not null!!!").getCompanyInstance().out.

Burapha Unviersity 99999 not null!!! Company@256a7c Company... 2001 . Ltd. Burapha Unviersity 99999 Burapha University. Ltd.Object-Oriented Analysis and Design not null!!! Company@256a7c Company.

2001 .Object-Oriented Analysis and Design Singleton Design Pattern • Pattern Name • Singleton / Object creational • Problem • class หนึ่ง class ใดมีเพียง instance เดียวเท่ านั้น และกาหนด global point ที่ใช้ ในการเข้ าถึง instance ของ class นั้น • Context • สร้ าง global data ภายใน ทีสามารถเข้ าถึงได้ จากวัตถุใดๆภายนอก หรือ ่ ประกาศ Object Identifier เป็ น global • หรือใช้ class operation ในการเข้ าถึง Object identifier ทีถูกสร้ างโดย ่ คลาส • รูปแบบอืนๆ ของ Singleton Pattern อาจขึนอยู่กบสถานการณ์ ตอน ่ ้ ั เริ่มต้ นสร้ าง instance Burapha University.

Object-Oriented Analysis and Design Singleton Design Pattern • Solution • สร้ าง class ที่มี Class Operation ในการให้ ค่า instance ของ class • อาจสร้ าง instance ของ class ไว้ ต้ังแต่ เริ่มแรกที่มีการ load class เข้ ามา ในระบบ • หรืออาจสร้ าง instance ของ class ในครั้งแรกที่มีการเรียก Class Operation เพือสอบถามค่ า instance ของ class ่ • Consequences • มีการควบคุมการเข้ าถึง object instance ทีถูก encapsulate ไว้ ใน class ่ • ไม่ จาเป็ นต้ องประกาศ name space ไว้ เป็ น global • อาจมีการทา subclass ของ Singleton class และให้ user สามารถเลือก ว่ าต้ องการสร้ าง subclass ใดเมื่อตอน run-time • อาจมีการดัดแปลงให้ มการสร้ าง instance ที่มากกว่ า 1 instance ี ภายในคลาส ตามต้ องการ Burapha University. 2001 .

Object-Oriented Analysis and Design Summary • • • • • What is A Pattern? Why Patterns? Software Patterns GoF Design Patterns Singleton (Object Creational Design Patterns) Burapha University. 2001 .

Sign up to vote on this title
UsefulNot useful