本文介绍: 该实例基于WPF实现,直接上代码,下面为三层架构的代码。
该实例基于WPF实现,直接上代码,下面为三层架构的代码。
目录
一 Model
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 设计模式练习.Model.代理模式
{
//1,定义接口
public interface Image
{
void display();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 设计模式练习.Model.代理模式
{
//3,定义代理类
internal class ProxyImage : Image
{
private RealImage realImage;
public string FilePath { get; set; }
public string LoadInfo { get; set; }
public ProxyImage(string filePath)
{
FilePath = filePath;
}
public void display()
{
if (realImage == null)
{
realImage = new RealImage(FilePath);
}
realImage.display();
LoadInfo = realImage.LoadInfo;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 设计模式练习.Model.代理模式
{
//2,实现接口
public class RealImage : Image
{
public string FilePath { get; set; }
public string LoadInfo { get; set; }
public RealImage(string filePath)
{
FilePath = filePath;
}
public void display()
{
LoadInfo = $"文件:{FilePath}加载完成!!!";
}
}
}
二 View
<Window x:Class="设计模式练习.View.代理模式.ProxyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:设计模式练习.View.代理模式"
mc:Ignorable="d"
Title="ProxyWindow" Height="450" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Res}" TextWrapping="Wrap"/>
<Button Content="代理加载文件" Grid.Column="1" Command="{Binding loadCommand}"/>
</Grid>
</Window>
三 ViewModel
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 设计模式练习.Model.代理模式;
namespace 设计模式练习.ViewModel.代理模式
{
partial class ProxyWindow_ViewModel : ObservableObject
{
[ObservableProperty]
private string res;
[RelayCommand]
private void load()
{
ProxyImage proxyImage = new ProxyImage("我的图片.png");
proxyImage.display();
Res += "第一次从磁盘加载" + proxyImage.LoadInfo + "rn";
proxyImage.display();
Res += "从第二次开始就从原有缓存加载了:" + proxyImage.LoadInfo + "rn";
}
}
}
原文地址:https://blog.csdn.net/XiaoWang_csdn/article/details/135854663
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_62089.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。