الگوی نماینده (پروکسی) Proxy Pattern
نویسنده: علی یگانه مقدم
تاریخ: ۱۳۹۵/۰۱/۲۴ ۱:۳۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public interface IFilesService
{
DirectoryInfo GetDirectoryInfo(string directoryPath);
void DeleteFile(string fileName);
void WritePersonInFile(string fileName,string name, string lastName, byte age);
} class FilesServices:IFilesService
{
public DirectoryInfo GetDirectoryInfo(string directoryPath)
{
return new DirectoryInfo(directoryPath);
}
public void DeleteFile(string fileName)
{
File.Delete(fileName);
Console.WriteLine("the file has been deleted");
}
public void WritePersonInFile(string fileName, string name, string lastName, byte age)
{
var text = $"my name is {name} {lastName} with {age} years old from dotnettips.info";
File.WriteAllText(fileName,text);
}
} class FilesServicesProxy:IFilesService
{
private readonly IFilesService _filesService;
public FilesServicesProxy()
{
_filesService=new FilesServices();
}
public DirectoryInfo GetDirectoryInfo(string directoryPath)
{
var existing = Directory.Exists(directoryPath);
if (!existing)
Directory.CreateDirectory(directoryPath);
return _filesService.GetDirectoryInfo(directoryPath);
}
public void DeleteFile(string fileName)
{
if(!File.Exists(fileName))
Console.WriteLine("Please enter a valid path");
else
_filesService.DeleteFile(fileName);
}
public void WritePersonInFile(string fileName, string name, string lastName, byte age)
{
if (!Directory.Exists(fileName.Remove(fileName.LastIndexOf("\\"))))
{
Console.WriteLine("File Path is not valid");
return;
}
if (name.Trim().Length == 0)
{
Console.WriteLine("first name must enter");
return;
}
if (lastName.Trim().Length == 0)
{
Console.WriteLine("last name must enter");
return;
}
if (age<18)
{
Console.WriteLine("your age is illegal");
return;
}
if (name.Trim().Length < 3)
{
Console.WriteLine("first name must be more than 2 letters");
return;
}
if (lastName.Trim().Length <5)
{
Console.WriteLine("last name must be more than 4 letters");
return;
}
_filesService.WritePersonInFile(fileName,name,lastName,age);
Console.WriteLine("the file has been written");
}
} static void Main(string[] args)
{
IFilesService filesService=new FilesServicesProxy();
filesService.WritePersonInFile("c:\\myfakepath\\a.txt","ali","yeganeh",26);
var directory = filesService.GetDirectoryInfo("d:\\myrightpath\\");
var fileName = Path.Combine(directory.FullName, "dotnettips.txt");
filesService.WritePersonInFile(fileName, "al", "yeganeh", 26);
filesService.WritePersonInFile(fileName, "ali", "yeganeh", 12);
filesService.WritePersonInFile(fileName, "ali", "yeganeh", 26);
filesService.DeleteFile("c:\\myfakefile.txt");
filesService.DeleteFile(fileName);
} File Path is not valid first name must be more than 2 letters your age is illegal the file has been written Please enter a valid path the file has been deleted