1 / 31

Design Patterns Introduction to Design Patterns Week #9 Jarungjit Parnjai

Design Patterns Introduction to Design Patterns Week #9 Jarungjit Parnjai. Object Oriented Analysis and Design. Lecture Outline. What is A Pattern? Why Patterns? Software Patterns GoF Design Patterns Singleton (Object Creational Design Patterns). What is A Pattern?. A Pattern

irish
Download Presentation

Design Patterns Introduction to Design Patterns Week #9 Jarungjit Parnjai

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Design PatternsIntroduction to Design PatternsWeek #9Jarungjit Parnjai Object Oriented Analysis and Design

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

  3. 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”

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

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

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

  7. Types of Software Patterns • Analysis • Design • Organizational • Process • Project Planning • Configuration Management

  8. 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 • Pattern whose form is described by means of software design constructs such as objects. Classes, inheritance and aggregation. • Programming Pattern • Pattern whose form is described by means of programming langugage

  9. More Abstract More Concrete Design Patterns Levels of Abstraction • Complex design for an entire application or subsystem • Solution to a general design problem in a particular context • Simple reusable design class such as a linked list, hash table, etc.

  10. GoF Classification of Design Patterns • GoF Design Patterns อยู่ในตรงกลางของ Levels of Abstraction • “ A design pattern names, abstracts, 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.”

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

  12. Purpose Creational Structural Behavioral Scope Factory Method Adapter InterpreterTemplate Method Class Object Abstract FactoryBuilderPrototypeSingleton AbstractBridgeCompositeFaçadeFlyweightProxy Chain of ResponsibilityCommandIteratorMediatorMementoStateStrategy GoF Design Patterns

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

  14. Design for Change (Continued) • Tight Coupling • Abstract factory, Bridge, Chain of Responsibility, Command, Façade, Mediator, Observer • Extending functionality of subclassing • Bridge, Chain of Responsibility, Composite, Decorator, Observer, Strategy • Inability to alter classes conveniently • Adapter, Decorator, Visitor

  15. 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 ซึ่งรวมถึงผลกระทบต่างๆ

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

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

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

  19. Singleton Design Pattern

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

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

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

  23. Singleton publicclass Company { private String name; private String address; private String regNumber; public Company(String n, String a, String r) { name = n; address = a; regNumber = r; } public String getCompanyName() { return name; } public String getCompanyAddress() { return address; } public String getCompanyRegistrationNumber() { return regNumber; } } • Second Design approach :

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

  25. Singleton publicclass Company { privatestatic Company instance = new Company("Company., Ltd.", "Burapha Unviersity", "99999"); private String name; private String address; private String regNumber; private Company(String n, String a, String r) { name = n; address = a; regNumber = r; } publicstatic Company getCompanyInstance() { return instance; } public String getCompanyName() { return name; } public String getCompanyAddress() { return address; } public String getCompanyRegistrationNumber() { return regNumber; } } • Third Design approach :

  26. Singleton publicclass TestCompany { publicstaticvoid main(String[] args) { Company instance1 = Company.getCompanyInstance(); if (instance1 == null) { System.out.println("null!!!"); } else { System.out.println("not null!!!"); System.out.println(instance1); System.out.println(instance1.getCompanyName()); System.out.println(instance1.getCompanyAddress()); System.out.println(instance1.getCompanyRegistrationNumber()+"\n"); } • Third Design approach :

  27. Company instance2 = Company.getCompanyInstance(); if (instance2 == null) { System.out.println("null!!!"); } else { System.out.println("not null!!!"); System.out.println(instance2); System.out.println(instance2.getCompanyName()); System.out.println(instance2.getCompanyAddress()); System.out.println(instance2.getCompanyRegistrationNumber()); } } }

  28. not null!!! Company@256a7c Company., Ltd. Burapha Unviersity 99999 not null!!! Company@256a7c Company., Ltd. Burapha Unviersity 99999

  29. 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

  30. 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 ภายในคลาส ตามต้องการ

  31. Summary • What is A Pattern? • Why Patterns? • Software Patterns • GoF Design Patterns • Singleton (Object Creational Design Patterns)

More Related