Rarestyleへようこそ
C#,デザインパターン,UML,オブジェクト指向,Webサービス,iPAQ(モバイル) アクセス数: Number_0Number_0Number_5Number_3Number_9Number_8Number_8Number_5
インデント OCPとデザインパターン
インデント サンプルコードについて
インデント デザインパターン ひとくちメモ
インデント FactoryMethodパターン
インデント AbstractFactoryパターン
インデント Builderパターン
インデント Prototypeパターン
インデント Adapterパターン
インデント Bridgeパターン
インデント Compositeパターン
インデント Decoratorパターン
インデント Facadeパターン
インデント Flyweightパターン
インデント Proxyパターン
インデント TemplateMethodパターン
インデント Chain of Responsibilityパターン
インデント Commandパターン
インデント Iteratorパターン
インデント Mediatorパターン
インデント Mementoパターン
インデント Observerパターン
インデント Stateパターン
インデント Strategyパターン
インデント Visitorパターン
インデント 速習!デザインパターン第一回
インデント 速習!デザインパターン第二回
インデント 速習!デザインパターン第三回
インデント UMLとは
インデント UML入門
インデント オブジェクト指向
インデント クラス図
インデント アクティビティ図
インデント インタラクション図
インデント ユースケース図
インデント Rarestyle証明書サービス
インデント QRコード発行WSDL
インデント QRコード発行サンプル
インデント J2EE覚書
インデント FreeMind実践レポート
インデント モバイル情報
インデント Homeページ
インデント イベント&デジタルファッション
インデント ごあいさつ・免責情報
インデント お問い合わせ
デザインパターンでキャリアアップ

Proxyパターン (デザインパターン)

Proxyパターン 導入

Proxyパターンはあるオブジェクトの制御をするために、そのオブジェクトの代理を利用するパターンです。

Proxyクラスは代理です。このクラスが実体となるRealSubjectクラスに対して処理を委譲します。 利用するクライアントは、Porxクラスにアクセスします。

Proxyパターン ポイント

Proxyと実態となるRealSubjectに対して共通のインターフェース(Subject)を定義します。 SubjectへのアクセスはProxyを隠蔽します。

UML Proxyパターン

C#ソースコード Proxyパターン

Sample.cs

using System;

namespace Proxy
{

   //--------------------------------------------------------
   //  デザインパターン Proxy
   //
   //  あるオブジェクトへのアクセスを制御するために
   //  そのオブジェクトの代理を利用する。
   //
   //--------------------------------------------------------


   //Subjectの抽象定義
   public abstract class Subject
   {
       //おこずかいをあげる定義
       public abstract void GiveMoney(int intMoney);
   }

   //Subjectの具象定義(お母さんを想像してください)
   public  class RealSubject_Mother: Subject
   {
       //おこずかいをあげます。
       public override void GiveMoney(int intMoney)
       {
           if (intMoney <=1000)
           {
               Console.WriteLine("{0}円あげます",intMoney);
           }
           else
           {
               Console.WriteLine("{0}円は多すぎます。あげません!!",intMoney);
           }
       }
   }

   //お母さんの代わりにお父さんが代役を勤めます。
   public class Proxy_Father : Subject
   {
       RealSubject_Mother mother;

       public override void GiveMoney(int intMoney)
       {
           //お父さんの内部でmotherインスタンスを生成
           if (this.mother==null)
           {
               mother =new RealSubject_Mother();
           }
           //実際にはお母さんがおこずかいをあげています。
           mother.GiveMoney(intMoney);
       }
   }

   /// <summary>
   /// Class1 の概要の説明です。
   /// </summary>
   class Class1
   {
       /// <summary>
       /// アプリケーションのメイン エントリ ポイントです。
       /// </summary>
       [STAThread]
       static void Main(string[] args)
       {
           //お父さんがおこずかいをあげます。
           Proxy_Father father =new Proxy_Father();
           father.GiveMoney(950);
           father.GiveMoney(2000);

           //実際に行っているのはお母さんですね。
       }
   }
}

Proxy 実行結果

UMLプラグインによる描画 Proxyパターン

Proxy UML Java

Javaソースコード Proxyパターン

Subject.java
   1: package proxy;
   2: 
   3: public abstract class Subject {
   4: 
   5:     public abstract void RealSubject_GiveMoney(int intMoney);
   6: 
   7: }
RealSubject_Mother.java
   1: package proxy;
   2: 
   3: public class RealSubject_Mother extends Subject {
   4: 
   5:     public void RealSubject_GiveMoney(int intMoney) {
   6:         
   7:         if(intMoney<=1000){                
   8:             System.out.println(intMoney +"円あげます");
   9:         }else{
  10:             System.out.println(intMoney +"円は多すぎます。あげません!");    
  11:         }
  12: 
  13:     }
  14: 
  15: }
Proxy_Father.java
   1: package proxy;
   2: 
   3: public class Proxy_Father extends Subject {
   4: 
   5: 
   6:     private RealSubject_Mother realSubject_Mother;
   7: 
   8:     public void RealSubject_GiveMoney(int intMoney) {
   9:                 
  10:         //実際にはお母さんが処理します。
  11:         if(realSubject_Mother==null){
  12:         
  13:             //お母さんのインスタンス生成
  14:             realSubject_Mother =new RealSubject_Mother();
  15:             realSubject_Mother.RealSubject_GiveMoney(intMoney);
  16:         }else{
  17:             
  18:             realSubject_Mother.RealSubject_GiveMoney(intMoney);
  19:         }
  20:         
  21:     }
  22: }
StartClass.java
   1: package proxy;
   2: 
   3: public class StartClass {
   4: 
   5:     public static void main(String[] args) {
   6:         Proxy_Father father =new Proxy_Father();
   7:         father.RealSubject_GiveMoney(950);
   8:         father.RealSubject_GiveMoney(2000);
   9:     }
  10: }



コミュニティマーカーデザインパターン「ひとくちメモ」へ

コミュニティマーカーHomeへもどる

お天気情報
東京都 東京 - 今日の天気
晴れ - リンク先
最高 最低
気温 12 4
湿度 53.6 39.2
取得日:2010/03/10 17:00:00  ST: True
東京都 東京 - 明日の天気
晴時々曇 - リンク先
最高 最低
気温 - -
湿度 - -
取得日:2010/03/10 17:00:00  ST: True
東京都 東京 - あさっての天気
曇時々晴 - リンク先
最高 最低
気温 18 8
湿度 64.4 46.4
取得日:2010/03/10 17:00:00  ST: True
大阪府 大阪 - 今日の天気
曇のち晴 - リンク先
最高 最低
気温 10 4
湿度 50 39.2
取得日:2010/03/10 17:00:00  ST: True
大阪府 大阪 - 明日の天気
晴時々曇 - リンク先
最高 最低
気温 - -
湿度 - -
取得日:2010/03/10 17:00:00  ST: True
大阪府 大阪 - あさっての天気
曇り - リンク先
最高 最低
気温 18 10
湿度 64.4 50
取得日:2010/03/10 17:00:00  ST: True
livedoorのWebサービスより提供
【工事中】お天気配信 ユーザー登録
Copyright 2006 Rarestyle このページへのリンクは確認不要です。
Programming by Xenon Project Team     postmaster@rarestyle.net
免責事項について
レアスタイルサイト内検索