PHP-модуль оболочки (для работы со многими социальными сетями) дизайн - PullRequest
2 голосов
/ 18 мая 2011

Я не очень хорош в 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 ]

2 голосов
/ 18 мая 2011

Возможно, вам лучше определить интерфейс для всех действий, а затем внедрить этот интерфейс во всех классах социальных сетей. Что-то вроде


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();
0 голосов
/ 18 мая 2011

Я думаю, вы должны думать о фабрике: 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();
}
...