{"text_format":"2","workbook":"xls","n_sheets":1,"sheets":["report2"],"not_rendered":{"charts":0,"images":0,"macros":0,"external_links":1,"defined_names":1,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"run_cost":"one","rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900","formulas":"cached_only"}

{"sheet":"report2","index":0,"n_rows":20,"n_cols":5,"rows_kept":20,"cut":false,"hidden":false,"merged":[[0,2,0,3],[0,4,0,5],[1,2,1,3],[1,4,1,5],[2,2,2,3],[2,4,2,5],[3,2,3,3],[5,2,5,3],[7,2,7,3],[8,2,8,3],[9,2,9,3],[11,2,11,3],[12,2,12,3],[14,2,14,3]],"flags":["formulas_cached_only"]}
[null,"1.","Record Nr.",null,"UNINA9910150176303321"]
[null,null,"Autore",null,"Koseoglu Kerem"]
[null,null,"Titolo",null,"Design Patterns in ABAP Objects"]
[null,null,"Pubbl/distr/stampa",null,"Boston : , : Rheinwerk Publishing Inc., , 2016"]
[{"$nulls":4},"©2017"]
[null,null,"ISBN",null,"9781493214655"]
[{"$nulls":4},"1493214659"]
[null,null,"Descrizione fisica",null,"1 online resource (504 pages)"]
[null,null,"Disciplina",null,"005.1"]
[null,null,"Soggetti",null,"ABAP Objects (Computer program language)"]
[{"$nulls":4},"Software patterns"]
[null,null,"Lingua di pubblicazione",null,"Inglese"]
[null,null,"Formato",null,"Materiale a stampa"]
[null,null,null,"Livello bibliografico","Monografia"]
[null,null,"Nota di contenuto",null,"Intro -- Dear Reader -- Notes on Usage -- Table of Contents -- Preface -- Design Pattern Categories -- How to Learn -- Part I &#xA0; Architectural Design Patterns -- 1 &#xA0; MVC -- 1.1 &#xA0; Case Study: Read, Process, Display, and Post -- 1.2 &#xA0; Passing Select Options -- 1.3 &#xA0; Distributing Application Logic -- 1.4 &#xA0; Related Patterns -- 1.5 &#xA0; Summary -- Part II &#xA0; Creational Design Patterns -- 2 &#xA0; Abstract Factory -- 2.1 &#xA0; Case Study: Log Analysis -- 2.2 &#xA0; Related Patterns -- 2.3 &#xA0; Summary -- 3 &#xA0; Builder -- 3.1 &#xA0; Case Study: Jobs for Text Files -- 3.2 &#xA0; When to Use -- 3.3 &#xA0; Privacy -- 3.4 &#xA0; Summary -- 4 &#xA0; Factory -- 4.1 &#xA0; Case Study: FI Documents for Parties -- 4.2 &#xA0; Advantages -- 4.3 &#xA0; Related Patterns -- 4.4 &#xA0; Summary -- 5 &#xA0; Lazy Initialization -- 5.1 &#xA0; Case Study: Logging Errors -- 5.2 &#xA0; Advantages -- 5.3 &#xA0; Related Patterns -- 5.4 &#xA0; Summary -- 6 &#xA0; Multiton -- 6.1 &#xA0; Case Study: Vendor Balance -- 6.2 &#xA0; When to Use -- 6.3 &#xA0; When to Avoid -- 6.4 &#xA0; State Modification -- 6.5 &#xA0; Summary -- 7 &#xA0; Prototype -- 7.1 &#xA0; Case Study: Item Clone -- 7.2 &#xA0; Changing Class Properties -- 7.3 &#xA0; Clone Operations -- 7.4 &#xA0; Related Patterns -- 7.5 &#xA0; Summary -- 8 &#xA0; Singleton -- 8.1 &#xA0; Case Study: Subcomponents -- 8.2 &#xA0; Advantages and Disadvantages -- 8.3 &#xA0; Related Patterns -- 8.4 &#xA0; Summary -- Part III &#xA0; Structural Design Patterns -- 9 &#xA0; Adapter -- 9.1 &#xA0; Case Study: Project Management "]
[{"$nulls":4},"Tools -- 9.2 &#xA0; Glue Code -- 9.3 &#xA0; Two-Way Adapters -- 9.4 &#xA0; Legacy Classes -- 9.5 &#xA0; Summary -- 10 &#xA0; Bridge -- 10.1 &#xA0; Case Study: Messaging Framework -- 10.2 &#xA0; Advantages -- 10.3 &#xA0; Summary -- 11 &#xA0; Composite -- 11.1 &#xA0; Recursive Programming: A Refresher -- 11.2 &#xA0; Case Study: HR Positions -- 11.3 &#xA0; Advantages -- 11.4 &#xA0; Disadvantages -- 11.5 &#xA0; When to Use -- 11.6 &#xA0; Related Patterns -- 11.7 &#xA0; Summary -- 12 &#xA0; Data Access Object -- 12.1 &#xA0; Case Study: Potential Customers -- 12.2 &#xA0; Redundant Code Prevention."]
[{"$nulls":4},"12.3 &#xA0; Related Patterns -- 12.4 &#xA0; Summary -- 13 &#xA0; Decorator -- 13.1 &#xA0; Case Study: User Exit -- 13.2 &#xA0; Advantages and Challenges -- 13.3 &#xA0; Related Patterns -- 13.4 &#xA0; Summary -- 14 &#xA0; Façade -- 14.1 &#xA0; Case Study: Bonus Calculation -- 14.2 &#xA0; When and Where to Use -- 14.3 &#xA0; Related Patterns -- 14.4 &#xA0; Summary -- 15 &#xA0; Flyweight -- 15.1 &#xA0; Case Study: Negative Stock Forecast -- 15.2 &#xA0; Disadvantages -- 15.3 &#xA0; When to Use -- 15.4 &#xA0; Related Patterns -- 15.5 &#xA0; Summary -- 16 &#xA0; Property Container -- 16.1 &#xA0; Case Study: Enhancing an SAP Program -- 16.2 &#xA0; Static vs. Instance Containers -- 16.3 &#xA0; Sharing Variables -- 16.4 &#xA0; Variable Uniqueness -- 16.5 &#xA0; Related Patterns -- 16.6 &#xA0; Summary -- 17 &#xA0; Proxy -- 17.1 &#xA0; Case Study: Sensitive Salary Information -- 17.2 &#xA0; When to Use -- 17.3 &#xA0; Related Patterns -- 17.4 &#xA0; Summary -- 18 &#xA0; Chain of Responsibility -- 18.1 &#xA0; Case Study: Purchase Order Approver Determination -- 18.2 &#xA0; Risks -- 18.3 &#xA0; Related Patterns -- 18.4 &#xA0; Summary -- Part IV &#xA0; Behavioral Design Patterns -- 19 &#xA0; Command -- 19.1 &#xA0; Case Study: SD Documents -- 19.2 &#xA0; When to Use or Avoid -- 19.3 &#xA0; Related Patterns -- 19.4 &#xA0; Summary -- 20 &#xA0; Mediator -- 20.1 &#xA0; Case Study: Stock Movement Simulation -- 20.2 &#xA0; When to Use -- 20.3 &#xA0; Disadvantages -- 20.4 &#xA0; Summary -- 21 &#xA0; Memento -- 21.1 &#xA0; Case Study: Budget Planning -- 21.2 &#xA0; Risks -- 21.3 &#xA0; Redo -- 21.4 &#xA0; Summary -- 22 &#xA0; Observer -- 22.1 &#xA0; Case Study: Target Sales Values -- 22.2 &#xA0; Advantages -- 22.3 &#xA0; Disadvantages -- 22.4 &#xA0; Multiple Subjects -- 22.5 &#xA0; Related Patterns -- 22.6 &#xA0; Summary -- 23 &#xA0; Servant -- 23.1 &#xA0; Case Study: Address Builder -- 23.2 &#xA0; Extensions -- 23.3 &#xA0; Related Patterns -- 23.4 &#xA0; Summary -- 24 &#xA0; State -- 24.1 &#xA0; Case Study: Authorization-Based Class Behavior -- 24.2 &#xA0; Advantages -- 24.3 &#xA0; Related Patterns -- 24.4 &#xA0; Summary -- 25 &#xA0; Strategy -- 25.1 &#xA0; Case Study: Sending Material Master Data."]
[{"$nulls":4},"25.2 &#xA0; Advantages -- 25.3 &#xA0; Passing Data to the Strategy Object -- 25.4 &#xA0; Optional Strategies -- 25.5 &#xA0; Intermediate Abstract Classes -- 25.6 &#xA0; Related Patterns -- 25.7 &#xA0; Summary -- 26 &#xA0; Template Method -- 26.1 &#xA0; Case Study: Average Transaction Volume -- 26.2 &#xA0; When to Use -- 26.3 &#xA0; Advantages and Risks -- 26.4 &#xA0; Degree of Abstraction -- 26.5 &#xA0; The \"Hollywood Principle\" -- 26.6 &#xA0; Summary -- 27 &#xA0; Visitor -- 27.1 &#xA0; Case Study: Incoming Invoice Processing -- 27.2 &#xA0; When to Use -- 27.3 &#xA0; Related Patterns -- 27.4 &#xA0; Summary -- A &#xA0; Object-Oriented Programming -- A.1 &#xA0; Object-Oriented ABAP Development Environment -- A.2 &#xA0; Class -- A.3 &#xA0; Superclass -- A.4 &#xA0; Abstract Class -- A.5 &#xA0; Interface -- A.6 &#xA0; UML -- A.7 &#xA0; Summary -- "]
[{"$nulls":4},"B &#xA0; Subclass Determination -- B.1 &#xA0; Hardcoding -- B.2 &#xA0; Convention over Configuration -- B.3 &#xA0; SAP Class Tables -- B.4 &#xA0; Custom Table -- C &#xA0; Principles -- C.1 &#xA0; Object-Oriented Principles -- C.1.1 &#xA0; Abstraction -- C.1.2 &#xA0; Composition -- C.1.3 &#xA0; Inheritance -- C.1.4 &#xA0; Encapsulation -- C.1.5 &#xA0; Polymorphism -- C.1.6 &#xA0; Decoupling -- C.2 &#xA0; Design Principles -- C.2.1 &#xA0; Single Responsibility -- C.2.2 &#xA0; Open-Closed -- C.2.3 &#xA0; Liskov Substitution -- C.2.4 &#xA0; Interface Segregation -- C.2.5 &#xA0; Dependency Inversion -- C.3 &#xA0; Anti-Patterns -- C.3.1 &#xA0; Blob -- C.3.2 &#xA0; Copy-Paste Programming -- C.3.3 &#xA0; Functional Decomposition -- C.3.4 &#xA0; Golden Hammer -- C.3.5 &#xA0; Grand Old Duke of York -- C.3.6 &#xA0; Input Kludge -- C.3.7 &#xA0; Jumble -- C.3.8 &#xA0; Lava Flow -- C.3.9 &#xA0; Object Orgy -- C.3.10 &#xA0; Poltergeist -- C.3.11 &#xA0; Reinvent the Wheel -- C.3.12 &#xA0; Spaghetti Code -- C.3.13 &#xA0; Swiss Army Knife -- C.3.14 &#xA0; Vendor Lock-In -- D &#xA0; The Author -- Index -- Service Pages -- Legal Notes."]
[null,null,null,"Sommario/riassunto","Use design patterns to step up your object-oriented ABAP game, starting with MVC! Want to create objects only when needed? Call objects only when required, minimizing runtime and memory costs? Reduce errors and effort by only coding an object once? Future-proof your code with a flexible design? Design patterns are the answer! With this guide, you'll get practical examples for every design pattern that will have you writing readable, flexible, and reusable code in no time! Creational Design PatternsCreate objects with the abstract factor, builder, factory, lazy initialization, multiton, prototype, and singleton design patterns Structural Design PatternsAllow objects to interact and work together without interdependency with the adapter, bridge, composite, data access object, decorator, façade, flyweight, property container, and proxy design patterns. Behavioral Design PatternsIncrease the flexibility of your object communication with the chain of responsibility, command, mediator, memento, observer, servant, state, strategy, template method, and visitor design patterns. Highlights:  MVC (model, view, controller) pattern Singleton pattern Factory pattern Builder pattern Observer pattern Visitor pattern Lazy initialization pattern Template method Strategy pattern Decorator pattern ABAP-specific examples Anti-patterns"]