在shell脚本里使用Abstract Factory的设计模式

在不同的平台下,我需要定义一个函数,of,其作用是在命令行下用系统定义的图形程序打开某个文件或URL。

比如,of .在Windows平台下应该用Explorer打开当前目录,而在Linux平台下应该用nautilus打开当前目录。

我需要一个工厂虚类,其实就是文件。在linux下,这个工厂有一个实类,同时也有一个对象,那就是我的.bashrc-linux;而在Windows下呢,那就是我的.bashrc-windows。哦,不好意思,我在Windows下在用的是Cygwin。所以也可以使用bash。

在.bashrc-linux这个工厂里,我们这样创建of

function of() {
    gnome-open "$@" > /dev/null 2>&1
}

而在.bashrc-windows这个工厂里,我们这样创建of

function of() {
     gnome-open "$@" > /dev/null 2>&1
}

在.bashrc里,我们这样决定要用哪个工厂:

if test `uname` = Linux; then
    factory=~/.bashrc-linux
else
    factory=~/.bashrc-windows
fi

然后,我们让工厂去创建我们想要的对象:

. $factory

哈哈,设计模式有何难哉!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值