|
Rarestyleへようこそ
|
|
|
|
|
|
デザインパターンでキャリアアップ
|
Proxyパターン (デザインパターン)
Proxyパターン 導入
Proxyパターンはあるオブジェクトの制御をするために、そのオブジェクトの代理を利用するパターンです。
Proxyクラスは代理です。このクラスが実体となるRealSubjectクラスに対して処理を委譲します。 利用するクライアントは、Porxクラスにアクセスします。
Proxyパターン ポイント
Proxyと実態となるRealSubjectに対して共通のインターフェース(Subject)を定義します。 SubjectへのアクセスはProxyを隠蔽します。
UML Proxyパターン
C#ソースコード Proxyパターン
|
Sample.cs
|
|
using System;
namespace Proxy
{
public abstract
class Subject
{
public
abstract void GiveMoney(int intMoney);
}
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)
{
if
(this.mother==null)
{
mother
=new RealSubject_Mother();
}
mother.GiveMoney(intMoney);
}
}
class Class1
{
[STAThread]
static
void Main(string[] args)
{
Proxy_Father father =new Proxy_Father();
father.GiveMoney(950);
father.GiveMoney(2000);
}
}
}
|
Proxy 実行結果
UMLプラグインによる描画 Proxyパターン
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 |
|
|
大阪府 大阪 - 今日の天気
|
曇のち晴
-
|
|
|
|
|
取得日: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サービスより提供 |
|
【工事中】お天気配信 ユーザー登録 |
|
|
|
|
|
Internet Explorer5.0以上のご利用を推奨いたします。
|
 |
Copyright 2006 Rarestyle
このページへのリンクは確認不要です。
Programming by Xenon Project Team
postmaster@rarestyle.net
免責事項について
|