Created January 27, 2011
Last updated January 27, 2011
[ Japanese | English ]

Design Pattern and Anti Pattern

  In this page , I will simply explain the Design Pattern and the Anti Pattern.
  The Design Patterns are simply success case collections. When there is a problem , those will solve it.
  The Anti Patterns are simply failure case collections. Those will explain failure pattern and give the solution of it.

  (Before I was also ... ) there are many person who study the Design Pattern and the Anti Pattern without understanding the basic of the object-oriented (For example, understanding of the Class and Object and so on) , but it is very dangerous. Plsease stop.
  If you don't understand the concept about the Class and Objects, please read "Classes and Objects - Dharma's Excel VBA"

  The Name of the Design Pattern and the Anti Pattern are ranges of the UMTP examination.
  I think that it is not a range of the Japan Information-Technology Engineers Examination.


1. What is the Design Pattern ?
2. What is the Anti Pattern ?
3. Reference


1. What is the Design Pattern ?

  The Design Pattern is simply:

Those put typical problems occurred in designing a program in order , and collect to reuse.
( From e-Words (In Japanese))

  The most famous Design Pattern is the Design Pettern of GoF.

  The merits of the studying the Degign Pattern are:
  1. Because we remember the name of the Design Patterns, it becomes easy to communicate with other people.
      In short, when you design the program and explain the idea of the design to other person , you don't need explain all.
      "There are names of the Pattern" is very important 1.
  2. We can understand the libraries further. (For example, Java libraries , boost(C++) , Qt(C++) and so on.)
      There are cases that libraries use the Design Patterns.
      For example , the InputStream class , the OutputStream class and these subclasses in java.io package. These classes use the Decorator Pattern.
  3. You can use the Patterns , when you design a program.


  The attentions of the application of the Design Patterns are:
  1. When you apply the Design Patterns , you should confirm not only the merits but also demerits.
      For example , if the Design Patterns is applied in object-oriented , there is a case that the number of the class is increase.
      If in aspect-oriented, the increasing is less than in object-oriented.
  2. You should confirm whether other person know the Design Patterns.
      I think that a few person understand perfectly. For example , many person only know the name or only know the 2 or 3 pattern. (but , I am too ...)

-----
Note.
1: This is not limited to the design pattern.
"There are names" is very important.
Back to Top

2. What is the Anti Pattern ?

  The Anti Pattern is simply:
  In software engineering, an anti-pattern (or antipattern) is a pattern that may be commonly used but is ineffective and/or counterproductive in practice.
( From Anti-pattern - Wikipedia, the free encyclopedia)
  An Anti Pattern consists of the name , the root causes , the symptoms , refactored solution and so on.
  The range of summary of Anti Patterns are not only in software design unlike an Design Pattern.

  I will introduce some Anti Patterns. The followings are Anti Pattern names and summaries.
  1. Lava Flow
      This pattern could occur when the updating speed of the research and development and technology. Programming source code is makeshift , document does not exist and there are unnecessary sources in many place.
      Those source codes , which are incomprehensible , could not modify. Because we can not modify for source codes that the specification are incomprehensible...
      But when you leave just as it is , those incomprehensible source codes increase.
  2. Golden Hammer
      Trying to apply the accustomed technology , idea and so on to anything and everything.
      There are often this cases.
  3. Cut and Paste Programming
      Because the specification is like , don't you copy and paste the source codes ?
      When you modify copied all source codes , aren't there cases that there are modification leak ?
    #Attention: In object-oriented , for example logging and access control and so on, there are cases that this pattern ocurr.
  4. Functional Decomposition
      This pattern ocurr , when a person who don't understand object-oriented design a program.
      Don't he (she) think class is the collection of the function ?
      There are often this cases too.
  5. Crush
      2 or more person are going to update the same datas.
      For example:
      PersonA show a data.
      PersonB show the same data. (Attention: PersonA don't know that PersonB show the data.)
      PersonA update and the data.
      PersonB update and the data too. ...? Where is the data updated by PersonA ? Go out ? And PersonA and PersonB don't notice that.

The merit that you study:
  1. Because the names exist , the communication become easy.
    ( We don't need to explain all. )
  2. We can decrease the mistakes when we design a program.
  3. We can use for education. (Because there are the patterns that the beginner may often make a mistake. )
  4. We can use for laughing materials of the communication to except software engineer. ( ... ? )

Back to Top

3. Reference

  The following tables are pages that I referred to create this page.

No.

Linked Website Name

Description

Linked date

1 Design pattern (computer science) - Wikipedia, the free encyclopedia This page explains the Design Patterns. January 27, 2011
2 Anti-pattern - Wikipedia, the free encyclopedia This page explains the Anti Patterns. January 27, 2011

No.

Author

Book Name

ISBN

1 Craig Larman Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition) 978-0131489066
2 Bill Dudney , Stephen Asbury , Joseph K. Krozak , Kevin Wittkopf J2EE AntiPatterns 978-0471146155


Prev Up Next  Top
Back to Top

I doesn't assume the responsibility of any damage that occurs because of the use of this page.

Microsoft ,Windows ,Visual Basic and Excel are registered trademarks of Microsoft Corporation in the United States and other countries.
Visual Basic® for Applications may represent a VBA.
Mac ,Mac OS ,Mac OS X ,AppleScript are trademarks of Apple Inc., registerd in the U.S. and other countries.
Other brands and their products are trademarks or registered trademarks of their respective holders and should be noted as such.

The author of this page and these companies do not have any relationship.