使用接口设计应用程序

时间:2014-08-05 02:59:59

标签: php oop interface abstract-class

我正在尝试实现一个Short Message Service或者你称之为移动设备的短信服务到我的PHP应用程序中,它将使用各种短信服务提供商向我的客户发送短信服务(真实案例是不同的,但我在这里尝试我最好解释一下我的问题,所以请关注这个短信示例。

现在,我被告知要遵循设计模式(不确定哪个是模式的新手)来整合它。

我的SMS课程应该有以下方法

<?php
class Verizon
{
        public function __construct($apiKey){
                // class constructor code...
        }

        public function AddNumber(array $numbers)
        {
                // ...
        }

        public function Send()
        {
                // ...
        }
}

现在,就像verizon一样,我将来会有不同的提供商,如AT&amp; T,Cellcom,T-Mobile US等......

以下是问题:

Q1。为不同的提供商提供不同的课程真的是个好主意吗?意味着如果我需要实现一个新的提供者,我必须写一个新的类?如果不是,那么呢?

Q2。在这种情况下如何使用接口? (我被告知使用接口)

Q3。如果你可以请我用一个接口来实现最佳实现方式结构的骨架,我将非常感激。

非常感谢提前

1 个答案:

答案 0 :(得分:4)

  

Q1。为不同的提供商提供不同的课程真的是个好主意吗?意味着如果我需要实现一个新的提供者,我必须写一个新的类?如果不是,那么呢?

是的,这是解决问题的好方法。所有提供程序都应支持相同的基本操作集,因此接口可以帮助您从提供程序的其他应用程序中抽象出特定于提供程序的详细信息。

  

Q2。在这种情况下如何使用接口? (我被告知使用接口)

对于简单的短信,这个简单的东西可能会很好:

interface ISMSProvider
{
    public function sendSMS($number, $message);
}

我会考虑编写实现,以便$number可以是单个数字或数字数组。然后你的提供者对象是无状态(你不需要AddNumber()等;所有信息都在参数中传递。)

  

Q3。如果你可以请我用一个接口来实现最佳实现方式结构的骨架,我将非常感激。

鉴于上面的接口,你可以写一个类似的实现:

class VerizonSMSProvider implements ISMSProvider
{
    // Add a constructor if you need to provide variable details such as API
    // endpoint or API key.

    public function sendSMS($number, $message)
    {
        // Actual implementation here.
    }
}