PHP包装模块(用于处理许多社交网络)设计

时间:2011-05-18 06:38:45

标签: php oop php-5.3

我不擅长OOD,所以收到一些建议会很高兴。 我将编写包装类,通过它的API处理许多社交网络和服务。 我希望我的包装器可以隐藏一个界面后面的每个服务/社交网络的细节。 它应该灵活且易于重用。

例如:

$sn = new SocialNetworks();
$sn->post(new Twitter('some post body'));
$sn->post(new Facebook(array('photo'=>'blabla.jpg')));
$sn->post(new Tumblr('long text'))->attach('blabla.jpg');

嗯,这样的事情。 那么什么是最好的设计解决方案呢? 谢谢

2 个答案:

答案 0 :(得分:2)

最好为所有操作定义接口,然后在所有socialnetwork类中实现该接口。

的内容

interface ISocialNetwork {
   public function post();
}
class Twitter implements ISocialNetwork {
   public function post() {
   }
}
class Facebook implements ISocialNetwork {
   public function post() {
   }
}

$Tw = new Twitter('some post body');
$Tw->post();

答案 1 :(得分:0)

我认为你应该想到一家工厂:http://en.wikipedia.org/wiki/Factory_method_pattern

也许是这样的:

<?php
class Service
{
    public static function build($type)
    {
        $class = 'Service' . $type;
        if (!class_exists($class)) {
            throw new Exception('Missing format class.');
        }
        return new $class;
    }
}

class ServiceTwitter {}
class ServiceFacebook {}

try {
    $object = Service::build('Twitter');
}
catch (Exception $e) {
    echo $e->getMessage();
}