Back to results

University of Pretoria

Implementing a reusable design pattern Library in C#

Abstract

dc:description.abstract

Design patterns in software systems are described as a universal reusable solution to a commonly recurring problem in software design. Design patterns were, however, not intended to be reusable in terms of code. A symptom of their non-reusability is the problems experienced with the way the implementation of design patterns negatively affects their traceability, maintainability and contribution to productivity. This thesis shows how design patterns can be elevated to a higher level of reusability. This work presents design patterns as reusable components that developers can use to implement solutions that utilise patterns, without having to implement a major part of a pattern’s structure and behaviour anew each time. A component is a reusable software section, with possible library classes, that is usually in source form. Previous research has shown that a high proportion of patterns (65%) can be “componentized” in Eiffel, which leads to the idea that a language supporting the same set of features would also have the same success in pattern componentization. This thesis has looked at the componentization of twelve design patterns in C#. The C# language has more advanced language features than Eiffel, including functional and dynamic language features and, as such, should lend itself better to pattern componentization than Eiffel does. The language features that are reviewed in this thesis are inheritance, design by contract™, attributes, method references (or delegates), anonymous functions, lambda expressions, mixins (or extension methods), duck typing, dynamic types and meta-programming. Each pattern’s reusable components are discussed in detail, including the success of the reusable component transformation. All the design patterns reviewed in this thesis could be transformed into fully or partially reusable components. Implementing design patterns using reusable library components is thus a step in the right direction in making design pattern implementations more traceable, reusable, maintainable and more productive. Other object-oriented languages implementing the same or similar language features as those reviewed in this thesis should have the same level of success in transforming design patterns into reusable components.

Degree

thesis:*
Grantor dc:publisher
University of Pretoria
Year dc:date.issued
2013

Author and committee

dc:creator, dc:contributor.*
Advisor dc:contributor.advisor
  • Bishop, Judith

Subjects

dc:subject × 6

Rights

dc:rights
Statement dc:rights
  • © 2013 University of Pretoria. All rights reserved. The copyright in this work vests in the University of Pretoria. No part of this work may be reproduced or transmitted in any form or by any means, without the prior written permission of the University of Pretoria.
Language dc:language.iso
en

Identifiers

dc:identifier.*
Dc Identifier Other
E13/9/1141/gm
OAI identifier oai:identifier
oai:repository.up.ac.za:2263/36776

Chain of custody

source
Harvested from
University of Pretoria
Base URL
repository.up.ac.za/server/oai/request
Last updated
2026-07-24
Source record
OAI-PMH GetRecord
citation

Implementing a reusable design pattern Library in C#. University of Pretoria, 2013. http://hdl.handle.net/2263/36776