CSharp: Proxy Pattern

1
2
3
4
5
6
7
8
9
/// <summary>
/// Proxy Patterns 代理模式
///20220918
/// geovindu,Geovin Du,涂聚文
/// </summary>
public interface DuImager
{
    Image getImage();
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/// <summary>
   /// Proxy Patterns 代理模式
   ///20220918
   /// geovindu,Geovin Du,涂聚文
   /// </summary>
   public  class QuickImage:DuImager
   {
 
       /// <summary>
       ///
       /// </summary>
       public QuickImage() { }
       /// <summary>
       /// Box.gif
       /// </summary>
       /// <returns></returns>
       public Image getImage()
       {
           return new Bitmap("flowrtree.jpg");  //flowrtree.jpg
       }
   }

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/// <summary>
   /// Proxy Patterns 代理模式
   ///20220918
   /// geovindu,Geovin Du,涂聚文
   /// </summary>
    public class FinalImage:DuImager
   {
        /// <summary>
        ///
        /// </summary>
       public FinalImage() { }
 
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
       public Image getImage()
       {
           return new Bitmap("flowrtree.jpg");
       }
   }

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/// <summary>
   /// Proxy Patterns 代理模式
   ///20220918
   /// geovindu,Geovin Du,涂聚文
   /// </summary>
   public  class ImageProxy
   {
       /// <summary>
       ///
       /// </summary>
       private bool done;
       /// <summary>
       ///
       /// </summary>
       private Timer timer;
       /// <summary>
       ///
       /// </summary>
       public ImageProxy()
       {
           timer = new Timer(new TimerCallback(timerCall), this, 5000, 0);
       }
       /// <summary>
       ///
       /// </summary>
       /// <param name="obj"></param>
       private void timerCall(object obj)
       {
           done = true;
           timer.Dispose();
       }
       /// <summary>
       ///
       /// </summary>
       /// <returns></returns>
       public Image getImage()
       {
           DuImager img;
           if (done)
               img = new FinalImage();
           else
               img = new QuickImage();
           return img.getImage();
       }
   }

  

调用试试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/// <summary>
    /// Proxy Patterns 代理模式
    ///20220918
    /// geovindu,Geovin Du,涂聚文
    /// </summary>
    public partial class ProxyPatternsForm : Form
    {
 
        private ImageProxy imgProxy;
        /// <summary>
        ///
        /// </summary>
        private void init()
        {
            imgProxy = new ImageProxy();
        }
        /// <summary>
        ///
        /// </summary>
        public ProxyPatternsForm()
        {
            InitializeComponent();
            init();
        }
 
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ProxyPatternsForm_Load(object sender, EventArgs e)
        {
 
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            Pic.Image = imgProxy.getImage();
 
        }
    }

  

输出:

 

posted @   ®Geovin Du Dream Park™  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2017-09-27 sql server: left join 重复数据
2015-09-27 sql: table,view,function, procedure created MS_Description in sql server
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示