请问interface实现后的具体应用应该怎么做?

发布于 2022-09-06 15:42:43 字数 614 浏览 15 评论 0

比如如下场景 , 中文名只是为了更直观的说明我想问的问题.

interface sotrage {
    public function save($m);
}   

根据接口实现了2个类.如下

class ftp implements sotrage {
    public function save($path) {
    }
}

class webdav implements sotrage {
    public function save($path) {
    }
}

用户实际操作的时候, 用户界面中有选项, 给用户自主选择权. ftp/webdav

比如某个controller

class upload($stroage='ftp',$path){
/* 请问*/
/* 这里如何优雅的根据不同$storage,调用不同的类呢? */
/* 例子比较简单,只有2个实现接口的类, 但是不希望使用if/else/switch 这样的方式感觉不是很优雅. */
/* 反射? 魔术方法? */
/* 谢谢大家 */
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

墨落画卷 2022-09-13 15:42:44

建议看一下《重构》,第八章有你想要的答案

宁愿没拥抱 2022-09-13 15:42:44

可以使用 抽象工厂

花落人断肠 2022-09-13 15:42:43
class upload($stroage = 'ftp',$path)
{
    $stroageClass = new $stroage;
    $stroageClass->save($path);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文