1 option
Real-world implementation of C# design patterns : overcome daily programming challenges using elements of reusable object-oriented software / Bruce M. Van Horn II.
- Format:
- Book
- Author/Creator:
- Van Horn, Bruce M., II, author.
- Language:
- English
- Subjects (All):
- C (Computer program language).
- Physical Description:
- 1 online resource (443 pages)
- Edition:
- First edition.
- Place of Publication:
- Birmingham, England : Packt Publishing Ltd., [2022]
- Summary:
- Build robust applications in C# easily using effective and popular design patterns and best practicesKey FeaturesRecognize solutions to common problems in software design with C#Explore real-world applications of design patterns that can be used in your everyday workGet to grips with 14 patterns and their design implementationsBook DescriptionAs a software developer, you need to learn new languages and simultaneously get familiarized with the programming paradigms and methods of leveraging patterns, as both a communications tool and an advantage when designing well-written, easy-to-maintain code. Design patterns, being a collection of best practices, provide the necessary wisdom to help you overcome common sets of challenges in object-oriented design and programming. This practical guide to design patterns helps C# developers put their programming knowledge to work. The book takes a hands-on approach to introducing patterns and anti-patterns, elaborating on 14 patterns along with their real-world implementations. Throughout the book, you'll understand the implementation of each pattern, as well as find out how to successfully implement those patterns in C# code within the context of a real-world project. By the end of this design patterns book, you’ll be able to recognize situations that tempt you to reinvent the wheel, and quickly avoid the time and cost associated with solving common and well-understood problems with battle-tested design patterns.What you will learnGet to grips with patterns, and discover how to conceive and document themExplore common patterns that may come up in your everyday workRecognize common anti-patterns early in the processUse creational patterns to create flexible and robust object structuresEnhance class designs with structural patternsSimplify object interaction and behavior with behavioral patternsWho this book is forThis book is for beginner and mid-level software developers who are looking to take their object-oriented programs or software designing skills to the next level by learning to leverage common patterns. A firm grasp of programming fundamentals and classical object-oriented programming (OOP) using languages like C#, C++, Objective-C, or Java is expected.
- Contents:
- Cover
- Title Page
- Copyright and Credits
- Foreword
- Contributors
- Table of Contents
- Preface
- Part 1: Introduction to Patterns (Pasta) and Antipatterns (Antipasta)
- Chapter 1: There's a Big Ball of Mud on Your Plate of Spaghetti
- Technical requirements
- No battle plan survives first contact with the enemy
- The Stovepipe system
- The Big Ball of Mud
- Time
- Cost
- Experience
- Skill
- Visibility
- Complexity
- Change
- Scale
- The Golden Hammer
- A throwaway code example
- How can patterns help?
- Summary
- Questions
- Further reading
- Chapter 2: Prepping for Practical Real-World Applications of Patterns in C#
- Becoming a prepper
- Spaghetti <
- lasagna <
- ravioli - software evolution explained with pasta
- Spaghetti code
- Lasagna code
- Ravioli - the ultimate in pasta code
- The foundational principle - writing clean code
- You should write code that is readable by humans
- Establishing and enforcing style and consistency
- Limiting cognitive load
- Terse is worse
- Comment but don't go overboard
- Creating maintainable systems using SOLID principles
- The Single Responsibility principle
- The Open-Closed Principle
- The Liskov Substitution principle
- The Interface Segregation principle
- The Dependency Inversion principle
- Measuring quality beyond the development organization
- Code reviews
- Overall design
- Functionality
- Part 2: Patterns You Need in the Real World
- Chapter 3: Getting Creative with Creational Patterns
- The following story is fictitious
- The initial design
- No pattern implementation
- The Simple Factory pattern
- The Factory Method pattern
- The Abstract Factory pattern
- The Builder pattern
- The Object Pool pattern
- The Singleton pattern
- Summary.
- Questions
- Chapter 4: Fortify Your Code With Structural Patterns
- B2B (back to bicycles)
- The Decorator pattern
- The Façade pattern
- The Composite pattern
- The Bridge pattern
- Chapter 5: Wrangling Problem Code by Applying Behavioral Patterns
- Meanwhile, back at the bicycle factory
- The Command pattern
- Applying the Command pattern
- Coding the Command pattern
- Testing the Command pattern's code
- The Iterator pattern
- Applying the Iterator pattern
- Coding the Iterator pattern
- Trying out the new iterator
- The Observer pattern
- Applying the Observer pattern
- Coding the Observer pattern
- The Strategy pattern
- Applying the Strategy pattern
- Coding the Strategy pattern
- Part 3: Designing New Projects Using Patterns
- Chapter 6: Step Away from the IDE! Designing with Patterns Before You Code
- A bad day at the agency
- Bumble Bikes factory - Dallas, Texas
- A physical rehabilitation clinic - Dallas, Texas
- Designing with patterns
- The first pass
- The seat
- The frame
- Wheels and casters
- The motor for the powered chair
- The steering mechanism for the powered chair
- The battery for the powered chair
- The track drive system for the Texas Tank
- Adding patterns
- The first design meeting
- The second pass
- Chapter 7: Nothing Left but the Typing - Implementing the Wheelchair Project
- The crack of noon
- Setting up the project
- Wheelchair components
- Finishing the wheelchair base classes
- Finishing up the composite
- Implementing the Builder pattern.
- Another refactor
- Adding concrete component classes
- Wrapping up the Builder pattern
- Adding the Singleton pattern
- Painting the chairs with the Bridge pattern
- Chapter 8: Now You Know Some Patterns, What Next?
- Patterns we didn't discuss
- Prototype
- Adapter
- Flyweight
- Chain of Responsibility
- Proxy
- Interpreter
- Mediator
- Memento
- State
- Template Method
- Visitor
- Patterns beyond the realm of OOP
- Software architecture patterns
- Data access patterns
- Creating your own patterns
- Name and classification
- The problem description
- The solution description
- Consequences of using the pattern
- Not everybody likes patterns
- Sundance Square - Fort Worth, Texas
- Appendix 1: A Brief Review of OOP Principles in C#
- A quick background of C#
- C# is a general-purpose language
- C# is purely and fully object-oriented
- C# uses a static, strong type system
- C# has automatic bounds checking and detection for uninitialized variables
- C# supports automated garbage collection
- C# code is highly portable
- Language mechanics in C#
- Variables in C#
- Classes
- Encapsulation
- C# auto-implemented properties
- Accessor logic with backing variables
- Inheritance
- Interfaces
- Defining interfaces
- Implementing interfaces
- IDEs for C# development
- Visual Studio
- VS Code
- Rider
- Appendix 2: A Primer on the Unified Modeling Language (UML)
- The structure of a class diagram
- Enumerations
- Packages
- Connectors
- Interface realization
- Composition
- Association
- Aggregation
- Directed association
- Dependency
- Notes
- Best practices.
- Less is more - don't try to put everything in one big diagram
- Don't cross the lines
- The most direct path for lines leads to a mess
- Parents go above children
- Keep your diagrams neat
- Index
- Other Books You May Enjoy.
- Notes:
- Description based on publisher supplied metadata and other sources.
- Description based on print version record.
- ISBN:
- 9781803247953
- 1803247959
- OCLC:
- 1347025760
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.