My Account Log in

3 options

Practical design patterns for Java developers : hone your software design skills by implementing popular design patterns in Java / Miroslav Wengner.

EBSCOhost Academic eBook Collection (North America) Available online

View online

Ebook Central College Complete Available online

View online

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Wengner, Miroslav, author.
Language:
English
Subjects (All):
Java (Computer program language).
Computer programming.
Physical Description:
1 online resource (266 pages)
Edition:
1st ed.
Place of Publication:
Birmingham, England : Packt Publishing, [2023]
Biography/History:
Wengner Miroslav: Miroslav is an engineer and architect with a passion for resilient distributed systems and product quality. He is a co-author and contributor to the Robo4J project (reactive soft real-time framework for robotics/IoT). He contributes to OpenJDK, and Java Mission Control Project, and is involved in other open-source technologies. Miroslav helps developers to create resilient and extendable solutions. He has been selected to Java Champions Program, recognized as JavaOne Rockstar and he has been Elected to Java Community Process (JCP) - Executive Committee to help guide the evolution of Java technologies. Souza Bruno: Bruno Souza is a Java Developer and Open Source Evangelist. As founder and coordinator of SouJava (Sociedade de Usuarios da Tecnologia Java; Java Technology Users Society) and leader of the Worldwide Java User Groups Community at Java. net, Bruno helped in the creation and organization of hundreds of JUGs worldwide. A Java Developer since the earliest days of the technology, Bruno took part in some of the largest Java projects in Brazil. Bruno is a Principal Consultant at Summa Technologies and has extensive experience in large projects in the Government, finance and service industries. A Cloud Expert at ToolsCloud, he promotes and develops cloud-based systems using Java. Nurturing developer communities is a personal passion, and Bruno worked actively with Java open source communities and projects. Bruno Souza is an Honorary Director of the Open Source Initiative (OSI), President of the innovation-focused Campus Party Institute, and Coordinator of Nuvem, the Cloud Computing Lab of LSI/USP. When not in front of a computer, Bruno enjoys time with his family in a little hideout near Sao Paulo. An amateur in many things - photographer, puppeteer, father - he strives to excel in some of them.
Summary:
As the experience level increases for software developers, it becomes crucial to develop the required skillset for developing quality code. This book will enable you to identify and apply common design patterns for building quality applications by refining your code.
Contents:
Cover
Title Page
Copyright and Credits
Foreword
Contributors
Table of Contents
Preface
Part 1: Design Patterns and Java Platform Functionalities
Chapter 1: Getting into Software Design Patterns
Technical requirements
Code - from symbols to program
Examining OOP and APIE
Only exposing what's required - encapsulation
Inevitable evolution - inheritance
Behavior on demand - polymorphism
Standard features - abstraction
Gluing parts to APIE
Understanding the SOLID design principles
The single-responsibility principle (SRP) - the engine is just an engine
The open-closed principle (OCP)
The Liskov Substitution Principle (LSP) - substitutability of classes
The interface segregation principle (ISP)
The dependency inversion principle (DIP)
Significance of design patterns
Reviewing what challenges design patterns solve
Summary
Questions
Further reading
Chapter 2: Discovering the Java Platform for Design Patterns
Knocking on Java's door
Exploring the model and functionality of the Java platform
The JDK
The JRE
The JVM
Reviewing GC and the Java memory model
The JMM
GC and automatic memory management
Examining the core Java APIs
Primitive data types and wrappers
Working with the String API
Introducing arrays
Discovering a collection framework
Math APIs
Functional programming and Java
Introducing lambdas and functional interfaces
Using functional interfaces in lambda expressions
Getting to grips with the Java Module System
A quick review of Java features from 11 to 17+
The local variable syntax for lambda parameters (Java SE 11, JEP-323)
Switch expressions (Java SE 14, JEP-361)
Text blocks (Java SE 15, JEP-378)
Pattern matching for instanceof (Java SE 16, JEP-394).
Records (Java SE 16, JEP-395)
Sealed classes (Java SE 17, JEP-409)
UTF-8 by default (Java SE 18, JEP-400)
Pattern matching for switch (Java SE 18, Second Preview, JEP-420)
Understanding Java concurrency
From a basic thread to executors
Executing tasks
Part 2: Implementing Standard Design Patterns Using Java Programming
Chapter 3: Working with Creational Design Patterns
It all starts with a class that becomes an object
Creating objects based on input with the factory method pattern
Motivation
Finding it in the JDK
Sample code
Conclusion
Creating objects from different families using the abstract factory pattern
Instantiating complex objects with the builder pattern
Cloning objects with the prototype pattern
Ensuring only one instance with the singleton pattern
Improving performance with the object pool pattern
Initiating objects on demand with the lazy initialization pattern
Reducing class dependencies with the dependency injection pattern
Chapter 4: Applying Structural Design Patterns
Incompatible object collaboration with the adapter pattern
Conclusion.
Decoupling and developing objects independently with the bridge pattern
Treating objects the same way using the composite pattern
Extending object functionality by using the decorator pattern
Simplifying communication with the facade pattern
Using conditions to select desired objects with the filter pattern
Sharing objects across an application with the flyweight pattern
Handling requests with the front-controller pattern
Identifying instances using the marker pattern
Exploring the concept of modules with the module pattern
Providing a placeholder for an object using the proxy pattern
Discovering multiple inheritance in Java with the twin pattern
Chapter 5: Behavioral Design Patterns
Limiting expensive initialization using the caching pattern
Handling events using the chain of responsibility pattern
Turning information into action with the command pattern
Finding it in the JDK.
Sample code
Giving meaning to the context using the interpreter pattern
Checking all the elements with the iterator pattern
Utilizing the mediator pattern for information exchange
Restoring the desired state with the memento pattern
Avoiding a null pointer exception state with the null object pattern
Keeping all interested parties informed using the observer pattern
Dealing with instance stages by using the pipeline pattern
Changing object behavior with the state pattern
Using the strategy pattern to change object behavior
Standardizing processes with the template pattern
Executing code based on the object type using the visitor pattern
Part 3: Other Essential Patterns and Anti-Patterns
Chapter 6: Concurrency Design Patterns
Decoupling a method execution with an active object pattern
Non-blocking tasks using async method invocation pattern
Delay execution until the previous task is completed with the balking pattern
Providing a unique object instance with a double-checked locking pattern
Using purposeful thread blocking via a read-write lock pattern
Decoupling the execution logic with a producer-consumer pattern
Executing isolated tasks with the scheduler pattern
Effective thread utilization using a thread-pool pattern
Answers
Chapter 7: Understanding Common Anti-Patterns
What anti-patterns are and how to identify them
Theoretical principles challenges
Collecting technical debt as a bottleneck
Inappropriately squeezing the capabilities of the Java platform
Selecting the right tool
Conclusion of the code smell anti-pattern
Examining typical software anti-patterns
Spaghetti code
Cut and paste programming
Blob
Lava flow
Functional decomposition
Boat anchor
Understanding software architecture anti-patterns
Golden hammer
Continuous obsolescence
Input kludge
Working in a minefield
Ambiguous viewpoint
Poltergeists
Dead end
Assessments
Index
Other Books You May Enjoy.
Notes:
Includes bibliographical references and index.
Description based on print version record.
ISBN:
9781804613320
1804613320
OCLC:
1369527025

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account