Java開発者のためのアンチデザインパターン
〜失敗を回避する秘訣

[表紙]Java開発者のためのアンチデザインパターン 〜失敗を回避する秘訣

B5変形判/256ページ

定価(本体2,380円+税)

ISBN 4-7741-1490-1

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

デザインパターンは使い方を間違えると,ソフトウェア開発の障害になってしまう恐れがあります。本書ではデザインパターンの危険な一面に注目し,デザインパターンを正しく使うためのノウハウについて解説します。

こんな方におすすめ

  • オブジェクト指向の理解を深めたい方
  • デザインパターンの理解を深めたい方

目次

第0章 デザインパターンのパラドックス〜デザインパターンの弱点とは?

  • 0-1 デザインパターンを使ったプロジェクトは失敗する?
    • 0-1-1 デザインパターンの暗黒面
    • 0-1-2 デザインパターンの弱点(1)
    • 0-1-3 デザインパターンの弱点(2)
    • 0-1-4 デザインパターンの弱点(3)
    • 0-1-5 デザインパターンの弱点(4)
    • 0-1-6 そして誰も使わなくなったデザインパターン

第1章 非オブジェクト指向に慣れた人がやりそうなこと

  • 1-1 デザインパターンが真価を発揮するために
    • 1-1-1 デザインパターンで大切なこと
  • 1-2 初心者が最初にやりそうなこと〜コピー&ペースト攻撃
    • 1-2-1 コピー&ペーストは簡単だけど…
    • 1-2-2 コピー&ペーストによる拡張の欠点
    • 1-2-3 ソースコードの汚染は少なめに
  • 1-3 初心者が次にやりそうなこと〜同じ処理がいっぱい
    • 1-3-1 同じ処理を繰り返すのは簡単だけど…
    • 1-3-2 同じ処理を繰り返すことの欠点
  • 1-4 中級者が最初にやりそうなこと〜if 文がいっぱい
    • 1-4-1 if文の多用と汚染個所の増大
    • 1-4-2 継承ってなんだろう
    • 1-4-3 interfaceを使って見づらさを解消
    • 1-4-4 abstract classでクラスから分離

第2章 初心者が次にやりそうなこと〜お願いだから共有化しましょう

  • 2-1 クラスの再利用とpackage化
    • 2-1-1 クラスの再利用における問題点
    • 2-1-2 package宣言の方法
  • 2-2 クラス名が重複しているときはどうする?
  • 2-1 クラス名の重複を解決する2つの方法

第3章 オブジェクトをnewする〜オブジェクトとはなんだ? 全部「static」ではダメなのか?

  • 3-1 「オブジェクト指向」と「オブジェクト」
    • 3-1-1 オブジェクトはデータと関数の集まり
    • 3-1-2 物事を抽象化して考える
  • 3-2 オブジェクト化と例外
    • 3-2-1 オブジェクトが生成されるタイミング
    • 3-2-2 static宣言でオブジェクト化の例外
    • 3-2-3 staticの欠点
  • 3-3 staticを使用したパターン
    • 3-3-1 Singletonパターン
  • 3-4 アクセス制限修飾子
    • 3-4-1 3つのアクセス制御修飾子とその役割
    • 3-4-2 オブジェクト指向と情報の隠匿
  • 3-5 アクセス制限:finalの3種類
    • 3-5-1 finalでアクセスを制限する
  • 3-6 継承を行う時の注意点(super)
    • 3-6-1 継承とコンストラクタ
  • 3-7 そしてSingletonを振り返ってみる
    • 3-7-1 オブジェクトを必ず1つにする
    • 3-7-2 Singletonを生成するタイミング

第4章 そして誰も使わなくなったデザインパターン〜運用から始めるデザインパターン

  • 4-1 プログラムの複雑化はFacadeで解消
    • 4-1-1 デザインパターンを使わないほうがよい場合
    • 4-1-2 複雑なプログラムを解消するFacadeパターン
  • 4-2 デザインパターンの利用にあたって大切なこと
    • 4-2-1 「理解」して「協力」してもらい「宣伝」しよう

第5章 連続バッチ/走査処理がしたい〜配列は難しい.配列は嫌だ.配列なんて最低だ

  • 5-1 Javaと配列の関係
    • 5-1-1 Javaにおける配列の使用方法
    • 5-1-2 面倒臭がり屋さんと配列
    • 5-1-3 コレクションの使用例
    • 5-1-4 「昇順にならべる」ことの難しさ
    • 5-1-5 連想配列を使う
  • 5-2 Commandについて
    • 5-2-1 コマンドによるパッチ処理
  • 5-3 Iteratorを使用してはいけないパターン
    • 5-3-1 Iteratorの短所とは?

第6章 速くて安くてうまいシステム構築へ向けて

  • 6-1 Flyweightでデータの共有
    • 6-1-1 やってはいけないデータ管理の例
    • 6-1-2 Flyweightでらくらく共有
  • 6-2 Proxyでちょっと時間稼ぎ
    • 6-2-1 オブジェクト化コストについて考える
    • 6-2-2 Proxyでnewするタイミングをずらす

第7章 「使えない・再利用できない」なら改造するしかない!〜再利用するために必要なこと

  • 7-1 Adapterの2つの使い方
    • 7-1-1 Adapterの使い方(1)〜interfaceの多重実装
    • 7-1-2 Adapterの使い方(2)〜コンポジションを使用する場合
    • 7-1-3 Adapterのよくない使い方
  • 7-2 Bridgeの本質はAdapterと同じ
    • 7-2-1 AdapterとBridgeの違いはどこにある?
  • 7-3 Decoratorはもう1つの「一皮かぶせる」パターン
    • 7-3-1 ネズミ算的なクラスの増加を抑える

第8章 最初から作成し直すのが面倒くさい〜データを作成する.保存する.展開する

  • 8-1 Mementoでデータを管理する
    • 8-1-1 データ部だけを抽出して管理する
  • 8-2 Mementoでミスをしないために
    • 8-2-1 Mementoの利点と弱点を理解する
  • 8-3 Abstract Factoryは複雑な生成パターン
    • 8-3-1 オブジェクトを生成するクラス群
    • 8-3-2 「携帯電話」で考える
    • 8-3-3 「人の情報」と「お薦めの店の情報」

第9章 これぞフレームワーク!〜動作の伝播と操作

  • 9-1 Observerでボタンマスターを目指す!?
    • 9-1-1 ボタンのオブジェクトについて考える
    • 9-1-2 Observerを導入する
  • 9-2 Observerを拡張する
    • 9-2-1 Observerの拡張(1)〜インナークラス
    • 9-2-2 Observerの拡張(2)〜無名インナークラス
  • 9-3 try/catch() 節で例外処理を「まとめて処理」する
    • 9-3-1 例外処理をまとめて無駄をなくす
  • 9-4 Mediatorによる処理の集中管理
    • 9-4-1 クラス数の増加が破綻を招く
    • 9-4-2 Mediatorで振る舞いを集中管理する

第10章 実装と機能の分離〜この動作はおかしい! 差し替えよう

  • 10-1 オブジェクトの生成と構築
    • 10-1-1 「状態」と「戦略」をクラス化する
  • 10-2 オブジェクトを渡して内部での振る舞いを変える〜Builder
    • 10-2-1 「たまご」と「ピザ」が冷めたらどうする?
  • 10-3 状態をあらかじめnewしておく
    • 10-3-1 「ピザ用の調理方法」から「たまご用の調理方法」へ

第11章 実体はフォルダのようなもの〜木構造は「構造」が難しすぎる!

  • 11-1 木構造とデザインパターン
    • 11-1-1 Compositeと2分木
    • 11-1-2 Compositeの注意点
    • 11-1-3 木構造で処理を伝播させる
    • 11-1-4 振る舞いをデータから切り離す

第12章 いままでとはまるで別物のInterpreterパターン

  • 12-1 もっとも難しいInterpreterパターン
    • 12-1-1 解析処理の文法をクラス化して木構造を形成させる

13章 初心者が軽視する,強烈にいけないこと〜理解不能と化すプログラムの根本的な原因

  • 13-1 インデント(字下げ)がメチャクチャ
  • 13-2 命名規則がメチャクチャ
  • 13-3 他にもある「注意してほしいこと」