設(shè)計模式有助于開發(fā)人員利用整個軟件開發(fā)群體的智慧開發(fā)健壯的高質(zhì)量軟件?!禖#設(shè)計模式(影印版)》是第一部完整的面向C#和.NET程序員的設(shè)計模式指導(dǎo)著作。 Steven John Metsker解釋了用C#作為面向?qū)ο缶幊陶Z言時,如何利用設(shè)計模式來創(chuàng)建簡潔的代碼,與此同時,還能有效地利用內(nèi)容廣泛的Microsoft.NET框架類庫。 針對所有23個經(jīng)典的“四個小姐”(Gang of Four)設(shè)計模式,Metsker提供了詳細的代碼實例,這些代碼實例使用了C#和.NET框架,同時提供了有助于快速掌握相關(guān)技巧的程序設(shè)計習(xí)題。這些習(xí)題廣泛地使用了UML標準表示法的基礎(chǔ)上學(xué)習(xí)掌握相關(guān)技能。 如果讀者已經(jīng)基于其他程序設(shè)計語言使用了軟件設(shè)計模式,那么本書有助于加深讀者的理解,增加讀者的自信心,并能幫助讀者在各種類型的C#工程中使用設(shè)計模式。如果讀者是一位Microsoft程序員,但是還不熟悉設(shè)計模式,那么本書是一本理想的實踐入門指導(dǎo)。
作者簡介
STEVEN JOHN METSKER 在設(shè)計模式、面向?qū)ο蟪绦蛟O(shè)計及軟件設(shè)計方法學(xué)等領(lǐng)域有廣泛的著述。Steven是CapTech風(fēng)險投資公司的一位軟件業(yè)務(wù)咨詢?nèi)藛T,經(jīng)常在OOPSLA會議上發(fā)言。他的著作發(fā)表在《Java Report》、《JOOP》、《Distributed Object Computing》、《Object Maazine》等雜志上。Steven在Addison-Wesley公司出版的著作包括:《Design Patterns Jave Workbook》(影印版《設(shè)計模式Java手冊》已由中國電力出版社出版)和《Building Parsers in Java》。
圖書目錄
Preface
Chapter 1: Introduction
Why Patterns?
Why Design Patterns?
Why C#?
UML
Challenges
The Organization of this Book
Welcome to Oozinoz!
Summary
Part 1: Interface Patterns
Chapter 2: Introducing Interfaces
Interfaces and Abstract Classes
Interfaces and Delegates
Interfaces and Properties
Interface Details
Summary
Beyond Ordinary Interfaces
Chapter 3: Adapter
Adapting to an Interface
Class and Object Adapters
Adapting Data in .NET
Summary
Chapter 4: Facade
An Ordinary Facade
Refactoring to Facade
Facades, Utilities, and Demos
Summary
Chapter 5: Composite
An Ordinary Composite
Recursive Behavior in Composites
Composites, Trees, and Cycles
Composites with Cycles
Consequences of Cycles
Summary
Chapter 6: Bridge
An Ordinary Abstraction
From Abstraction to Bridge
Drivers as Bridges.
Database Drivers
Summary
Part 2: Responsibility Patterns
Chapter 7: Introducing Responsibility
Ordinary Responsibility
Controlling Responsibility with Accessibility
Summary
Beyond Ordinary Responsibility
Chapter 8: Singleton
Singleton Mechanics
Singletons and Threads
Recognizing Singleton
Summary
Chapter 9: Observer
C# Support for Observer
Delegate Mechanics
A Classic Example---Observer in GUIs
Model/View/Controller
Layering
Summary
Chapter 10: Mediator
A Classic Example---GUI Mediators
Relational Integrity Mediators
Summary
Chapter 11: Proxy
A Simple Proxy
A Data Proxy
Remote Proxies
Summary
Chapter 12: Chain of Responsibility
An Ordinary Chain of Responsibility
Refactoring to Chain of Responsibility
Anchoring a Chain
Chain of Responsibility without Composite
Summary
Chapter 13: Flyweight
Immutability
Extracting the Immutable Part of a Flyweight
Sharing Flyweights
Summary
Part 3: Construction :Patterns
Chapter 14: Introducing Construction
A Few Construction Challenges
Summary
Beyond Ordinary Construction
Chapter 15: Builder
An Ordinary Builder
Building under Constraints
A Forgiving Builder
Summary
Chapter 16: Factory Method
A Classic Example Enumerators
Recognizing Factory Method
Taking Control of Which Class to Instantiate
Factory Method in Parallel Hierarchies
Summary
Chapter 17: Abstract Factory
A Classic Example GUI Kits
Abstract Factories and Factory Method
Namespaces and Abstract Factories
Summary
Chapter 18: Prototype
Prototypes as Factories
Prototyping with Clones
Summary
Chapter 19: Memento
A Classic Example Using Memento for Undo
Memento Durability
Persisting Mementos across Sessions
Summary
Part 4: Operation Patterns
Chapter 20: Introducing Operations
Operations and Methods
Signatures
Delegates
Exceptions
Algorithms and Polymorphism
Summary
Beyond Ordinary Operations
Chapter 21: Template Method
A Classic Example--Sorting
Completing an Algorithm
Template Method Hooks
Refactoring to Template Method
Summary
Chapter 22: State
Modeling States
Refactoring to State
Making States Constant
Summary
Chapter 23: Strategy
Modeling Strategies
Refactoring to Strategy
Comparing Strategy and State
Comparing Strategy and Template Method
Summary
Chapter 24: Command
A Classic Example--Menu Commands
Using Command to Supply a Service
Command Hooks
Command in Relation to Other Patterns
Summary
Chapter 25: Interpreter
An Interpreter Example
Interpreters, Languages, and Parsers
Summary
Part 5: Extension Patterns
Chapter 26: Introducing Extensions
Principles of OO Design
The Liskov Substitution Principle
The Law of Demeter
Removing Code Smells
Beyond Ordinary Extensions
Summary
Chapter 27: Decorator
A Classic Example--Streams
Function Wrappers
Decorator in GUIs
Decorator in Relation to Other Patterns
Summary
Chapter 28: Iterator
Ordinary Iteration
Thread-Safe Iteration
Iterating over a Composite
Summary
Chapter 29: Visitor
Visitor Mechanics
An Ordinary Visitor
Visitor Cycles
Visitor Controversy
Summary
Appendix A: Directions
Get the Most Out of This Book
Understand the Classics
Weave Patterns into Your Code
Keep Learning
Appendix B: Solutions
Appendix C: Oozinoz Source
Acquiring and Using the Source
Building the Oozinoz Code
Helping the Oozinoz Code Find Files
Testing the Code with NUnit
Finding Files Yourself
Summary
Appendix D: UML at a Glance
Classes
Class Relationships
Interfaces
Delegates and Events
Objects
States
Glossary
Bibliography,
Index