Facade_パターンとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Facade_パターンの意味・解説 

Facade パターン

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2014/02/19 15:53 UTC 版)

Facade パターンあるいは Façade パターン(ファサード・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義された、コンピュータソフトウェアデザインパターンの1つである。Facade(ファサード)とは「建物の正面」を意味する。異なるサブシステムを単純な操作だけを持ったFacadeクラスで結び、サブシステム間の独立性を高める事を目的とする。

概要

Facadeパターンの例として、サブシステムとしてのコンパイラーを考える。システムとしてのコンパイラーは字句解析器や構文解析器などから構成されている。これらの構成要素は、新たなコンパイラーやその他ソフトウェアを作成する上でサブシステムとして利用することが出来る。しかし、一般ユーザーにとってコンパイラーはソースコードからプログラムを生成するためのものであり、ソースコードをコンパイルできる機能があれば十分である。そこでサブシステムから一般ユーザーのために一般ユーザーが必要としているコンパイル機能だけを呼び出すクラスを提供する。ここで提供されたコンパイル機能を持つクラスがFacadeクラスである。Facadeクラスが提供された事により一般ユーザーはサブシステムの詳細を知る必要がなくなり、サブシステムの実装から解放されるのである。

Facadeパターンの要件

  • Facadeクラスはあくまでサブシステム内部に仕事を投げるだけで複雑な実装は持たない。
多様な機能の塊であるサブシステムから、サブシステムを利用するユーザーの用途に合わせた窓口(インターフェース)を提供するだけである。
  • Facadeクラスをサブシステム自体が利用する事はない。
Facadeクラスはあくまでサブシステム末端の窓口であるため、同じサブシステムから利用される事はない。
  • Facadeパターンはサブシステムの直接使用を妨げない。
Facadeクラスの利用は強制ではなく、必要であればサブシステムの機能を直接利用できる。言語によっては無名名前空間やPackageスコープによりサブシステムを利用者から隔離できるが、Facadeパターンはそのような制限はしない。

クラス図

Facade パターンのクラス図を以下に挙げる。

適用例

Java による適用例を以下に挙げる。

driving.Car

 package driving;
 class Car{
     private int speed;
     private int distance;
     Car(){
         this.speed = 0;
         this.distance = 0;
     }
     void setSpeed(int speed){
         this.speed = speed;
     }
     void run(int minutes){
         this.distance += minutes * this.speed;
     }
     int getDistance(){
         return this.distance;
     }
 }

driving.Driver

 package driving;
 class Driver{
     private Car car;
     Driver(Car car){
         this.car = car;
     }
     void pushPedal(int speed){
         this.car.setSpeed(speed);
     }
     void drive(int minutes){
         this.car.run(minutes);
     }
 }

driving.DrivingSimulator

 package driving;
 public class DrivingSimulator{
     public void simulate(){
         Car c    = new Car();
         Driver d = new Driver(c);
         d.pushPedal(700);
         d.drive(30);
         d.pushPedal(750);
         d.drive(20);
         System.out.println("The travel distance is " + c.getDistance() + " m.");
     }
 }

FacadeTest

 import driving.DrivingSimulator;
 public class FacadeTest{
     public static void main(String[] argv){
         new DrivingSimulator().simulate();
     }
 }

このソースコードの場合、クラス図の Facade にあたるのは DrivingSimulator である。 CarDriver の各種メソッドの呼び出しが DrivingSimulator#simulate() の中にすべて集約されている。

関係するパターン

Abstract Factory パターン
Abstract Factory パターンは Facade パターンの具体例と言える。ConcreteFactory クラスが Facade クラスに相当する。

関連項目


「Facade パターン」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Facade_パターン」の関連用語

Facade_パターンのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Facade_パターンのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのFacade パターン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS