问题描述
我希望实现一种可以管理具有各种位置的文件的工具;本地文件、UNC 路径文件、托管在 AWS 上的文件、托管在 Synology NAS 上的文件等。这将在 PS 5.1 中使用类和许多特定模式来完成。
我的想法是我需要一个基本路径类型,它具有路径本身的属性。然后我需要从基本 Path 类继承的 UNC 路径、本地路径、AWS 路径等的类。然后我可以有一个 copy 类根据方法签名以不同的方式处理副本。因此 UNC > UNC 的处理方式与 AWS > UNC 不同。所以,策略模式。
至于路径类型,这似乎是工厂模式的地方。我在 Internet 上找到的每个工厂模式示例,在 PowerShell 中,都涉及一个专用的工厂类。但在我看来,从逻辑上讲,创建 Path 派生类的工厂可以/应该是 Path 类本身的一部分,作为静态方法。我搜索了静态工厂方法,这个概念在其他语言中有很好的文档记录,但不是 PowerShell。所以我决定尝试一下。为此,我将此作为概念证明...
class pxPath {
hidden $_path
pxPath () {}
pxPath ([string]$path) {
$this._path = $path
}
static [pxPath] Factory ([String]$path) {
[pxPath]$newPath = [uncFileSystem]::new($path)
return $newPath
}
}
class uncFileSystem : pxPath {
uncFileSystem ([String]$path) : base ([String]$path) {
}
}
$testPath = [pxPath]::Factory('\\Server\folder\file.txt')
$testPath.getType().FullName
$testPath._path
它没有策略模式所需的多个派生类型,它只是创建一个派生类型。但它证明了工厂作为静态方法是有效的。
我的问题是,是否有一些我没有看到的反对这一点的论据,这解释了为什么我从未见过这样的 PowerShell 示例?这对我来说很有意义,但我从未见过它完成,这真的让我停下来。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)