sharkzt/fibonacci

Fibonacci PHP 类实现,采用单例、策略和适配器设计模式

1.2.1 2017-06-26 19:51 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:03:38 UTC


README

Fibonacci PHP 类实现,采用单例、策略和适配器设计模式

Build Status Coverage Status

安装

推荐通过Composer安装包

$ composer require sharkzt/fibonacci

使用示例

单例

//get fibonacci series via class with recursion approach
$fibonacciWithRecursion = new \Sharkzt\Fibonacci\Singleton\Fibonacci(11);
return $fibonacciWithRecursion->getSeries();

//get fibonacci series via class with iteration approach 
$fibonacciWithIteration = new \Sharkzt\Fibonacci\Singleton\FibonacciIterator(11);
$fibonacciWithIteration->initialize();
return $fibonacciWithIteration->getSeries();

上面的代码将返回 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]。

适配器

//get fibonacci series via iterator adapter
$fibonacciIteratorAdapter = new FibonacciIteratorAdapter(new FibonacciIterator());
$fibonacciIteratorAdapter
    ->setCount(11)
    ->initialize();

return $fibonacciIteratorAdapter->getSeries();

//get fibonacci series via recursion adapter
$fibonacciIteratorAdapter = new FibonacciRecursionAdapter(new Fibonacci());
$fibonacciIteratorAdapter
    ->setCount(11)
    ->initialize();

return $fibonacciIteratorAdapter->getSeries();

这将返回 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]。

策略

//get fibonacci series with iteration strategy
$fibonacciStrategy = new FibonacciStrategy(new Fibonacci(), new FibonacciIterator());
$fibonacciStrategy->setStrategy($fibonacciStrategy->iterationStrategy);
$fibonacciStrategy
    ->setCount(11)
    ->initialize();

return $fibonacciStrategy->getSeries();

//get fibonacci series with recursion strategy
$fibonacciStrategy = new FibonacciStrategy(new Fibonacci(), new FibonacciIterator());
$fibonacciStrategy->setStrategy($fibonacciStrategy->recursionStrategy);
$fibonacciStrategy
    ->setCount(11)
    ->initialize();

return $fibonacciStrategy->getSeries();

结果是 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]。

许可证

Fibonacci 类以 MIT 许可证发布。有关详细信息,请参阅捆绑的 LICENSE 文件。