最終更新: yamanobori_old 2010年09月21日(火) 11:20:36履歴
デザインパターン入門
デザインパターン入門
- 抽象クラスやインターフェースの使い方がよくわからない人は,AggregateインターフェースやIreratorインターフェースではなく,いきなりConcreteAggregate役やConcreteIterator役の上でプログラミングをしていまいがちです.〜具体的なクラスだけを使うと,クラス間の結合が強くなってしまい,部品として再利用することが難しくなります.〜抽象クラスやインターフェースを使ってプログラミングする,という考え方を頭の隅に置いてください.
// Aggregate.cs namespace chap01 { interface Aggregate { Iterator iterator(); } } // Book.cs namespace chap01 { public class Book { public string name { get; private set; } public Book(string name) { this.name = name; } } } // BookShelf.cs using System.Collections; namespace chap01 { class BookShelf : Aggregate { private ArrayList books; private int last; public BookShelf(int maxsize) { books = new ArrayList(); } public Book getBookAt(int index) { return (Book)books[index]; } public void appendBook(Book book) { books.Add(book); last++; } public int getLength() { return last; } public Iterator iterator() { return new BookShelfIterator(this); } } } // BookShelfIterator.cs namespace chap01 { class BookShelfIterator : Iterator { private BookShelf bookShelf; private int index; public BookShelfIterator(BookShelf bookShelf) { this.bookShelf = bookShelf; this.index = 0; } public bool hasNext() { return index < bookShelf.getLength() ? true : false; } public object next() { return bookShelf.getBookAt(index++); } } } // Iterator.cs namespace chap01 { interface Iterator { bool hasNext(); object next(); } } // Program.cs using System; namespace chap01 { class Program { static void Main(string[] args) { BookShelf bookShelf = new BookShelf(4); bookShelf.appendBook(new Book("Arround the world in 80 Days")); bookShelf.appendBook(new Book("Bible")); bookShelf.appendBook(new Book("Cinderella")); bookShelf.appendBook(new Book("Daddy-Long-Legs")); bookShelf.appendBook(new Book("JAVA言語で学ぶデザインパターン入門")); bookShelf.appendBook(new Book("プログラミング作法")); bookShelf.appendBook(new Book("プログラミング言語C")); bookShelf.appendBook(new Book("はじめてのPerl")); Iterator it = bookShelf.iterator(); while (it.hasNext()) { Book book = (Book)it.next(); Console.WriteLine(book.name); } Console.ReadKey(); } } }
デザインパターン入門
このページへのコメント
A4giK5 <a href="http://pgntwhzwxiah.com/">pgntwhzwxiah</a>, [url=http://werfmumqurka.com/]werfmumqurka[/url], [link=http://niyvyysacsfg.com/]niyvyysacsfg[/link], http://rmdlxjoxdngp.com/