标签: facade

使用立面图案

我怎么知道在我的应用程序开发中需要一个外观模式?

如何在Facade Pattern和Template Pattern之间画线?

例如:在[this]文章中,我们看到,int placeOrder(int CustomerID, List<BasketItem> Products)算法中有许多预定义的步骤.那么作者为什么不在这里使用模板模式呢?

language-agnostic design-patterns facade

6
推荐指数
2
解决办法
3616
查看次数

是否有任何现有的Java缓存外观?

我正准备开始在应用程序中开始性能,最终将分布式运行,但目前正处于[绿地]开发阶段.

我希望能够在没有选择或提交到特定库的情况下引入缓存,所以我想知道是否存在一个已经存在的缓存外观库(类似于slf4j用于日志记录),这将允许我在以后的日子.

java caching facade

6
推荐指数
1
解决办法
693
查看次数

何时使用Facades以及何时注入依赖项

我目前正在使用Laravel-4在php中构建一个Web应用程序,但是,我怀疑这个问题也适用于其他语言和框架.

我已阅读有关依赖注入和Facades的信息,并了解每种情况下的必要编码.我不清楚的是你何时应该使用一个而不是另一个?

使用依赖注入而不是Facade设计模式的优点/缺点或原因是什么?

非常感谢

php dependencies dependency-injection facade laravel-4

6
推荐指数
1
解决办法
903
查看次数

门面模式与SRP

在经典的Facade模式中,单个对象通常为更复杂的东西提供简化的界面.

正如四人帮所说的那样(尽管接近"官方"......):

Facade(185)为子系统中的一组接口提供统一接口.Facade定义了一个更高级别的接口,使子系统更易于使用.

...一个外观只是抽象出子系统对象的接口,使它们更容易使用; 它没有定义任何新功能,子系统类也不知道它.

或者,正如Unmesh将其放在/sf/answers/366973351/中:

Facade保护用户免受系统的复杂细节的影响,并为他们提供易于使用的简化视图.它还将使用系统的代码与子系统的细节分离,使以后更容易修改系统.

单一责任原则告诉我们

一个类或模块应该只有一个改变的理由.

Per Bob叔叔(http://en.m.wikipedia.org/wiki/Single_responsibility_principle)

鉴于Facade在设计上可以保护用户免受众多"改变的原因"的影响,这两个想法如何协同工作?Facade是否有与其实现所依赖的子系统数量一样多的理由进行更改?

oop design-patterns single-responsibility-principle facade solid-principles

6
推荐指数
2
解决办法
1025
查看次数

Controller和Facade有什么区别?

在我的应用程序中,我曾经使用它们作为控制器在主应用程序中调用Facade方法,因为我认为它们是相同的,但现在我认为我错了.

我的应用程序使用多个Facade,每个Facade用于一种任务.如果我改为使用Controller,正确的方法是只有一个控制器?

我的问题是Facade和Controller之间的区别是什么.

language-agnostic model-view-controller design-patterns controller facade

5
推荐指数
1
解决办法
6756
查看次数

如何 Str::shouldReceive?(模拟 Illuminate\Support\Str)

我有一个Str::random()我想测试的类。

但是当我Str::shouldReceive('random')在我的测试中使用时,我得到一个 BadMethodCallException 说该方法 shouldReceive 不存在。

我还尝试直接模拟该类并将其绑定到 IOC,但它一直在执行原始类,生成一个随机字符串而不是我在模拟上设置的返回值。

    $stringHelper = Mockery::mock('Illuminate\Support\Str');
    $this->app->instance('Illuminate\Support\Str', $stringHelper);
    //$this->app->instance('Str', $stringHelper);

    $stringHelper->shouldReceive('random')->once()->andReturn('some password');
    //Str::shouldReceive('random')->once()->andReturn('some password');
Run Code Online (Sandbox Code Playgroud)

unit-testing facade laravel mockery

5
推荐指数
1
解决办法
1249
查看次数

Laravel:门面真的会在调用方法时创建新对象吗?

我有一个演示类通常通过

$this->app->bind('demo', function() { return new Demo(); }

一个立面

受保护的静态函数 getFacadeAccessor() { return 'demo'; }

类本身看起来像这样

课堂演示 
    {

        私人 $value1;        
        私人 $value2;        

        公共函数 setVal1($value)
        {
            $this->value1 = $value;
        }

        公共函数 setVal2($value)
        {
            $this->value2 = $value;
        }

        公共函数 getVals()
        {
            返回 '​​Val 1:' 。$this->value1 。'瓦尔2:'。$this->value2;
        }   

    }

有人告诉我,如果我在这个类上使用 Facade,Laravel 将实例化该类的一个对象,然后调用该对象上的方法,例如:

$app->make['demo']->setVal1();     
Run Code Online (Sandbox Code Playgroud)

Butt 我测试了更多,发现这种非常奇怪(至少对我而言)的行为:

如果我做

演示::setVal1('13654');

演示::setVal2('随机字符串')

我不应该使用 Demo::getVals() 来检索我刚刚创建的值,对吗?由于每次使用外观方法时都会实例化一个新对象,一个对象如何检索另一个对象的属性?应该有三个不同的实例,但我仍然能够从其他实例中检索属性......

我认为这只有在将类与 App::singleton 绑定而不是通过 App::bind 绑定时才有可能?

php facade inversion-of-control laravel

5
推荐指数
1
解决办法
2991
查看次数

Symfony2 服务的外观模式

Symfony2 新手,我正在构建一个使用外部 API 来获取数据的应用程序。我创建了很多客户端类来从 API 检索和转换每个实体,并将这些类定义为服务 - 例如,我有一个像orFooClient之类的 with 方法,它从 API 返回数据。getAll()getThoseThatInterestMe($me)

现在我想创建一个ApiClientFacade类,它充当所有类前面的接口XxxClient,遵循外观模式- 例如,这个外观类将有一个方法getAllFoo(),而该方法又会调用FooClient::getAll(),依此类推......

我也可以将我的外观类定义为服务,但它有太多的依赖项 - 我有大约 30 个客户端类。另外,据我所知,使用这种方法我每次都会加载所有 30 个依赖项,而大多数时候我只需要一个依赖项......

那么,有更好的方法吗?

service facade symfony

5
推荐指数
1
解决办法
3105
查看次数

Laravel 如何将外观放置在全局和自定义命名空间中?

我已经被这个问题困扰了一段时间了,这确实困扰了我,所以我想我应该问一下。在 Laravel 中,它们如何允许访问具有两个命名空间的外观?如果你不明白我的意思,这里有一个例子。使用会话外观时,以下两个语句都将起作用:

use Session;
use Illuminate\Support\Facades\Session;
Run Code Online (Sandbox Code Playgroud)

我在网上进行了搜索,但仍然没有找到这个问题的答案。

谢谢你的帮助!

php namespaces facade laravel

5
推荐指数
1
解决办法
1191
查看次数

Retrofit 使用什么设计模式以及在 Android 中如何使用它?

我认为Retrofit使用的是Facade设计模式

  • 是真的吗,如果是的话,它如何使用它(因为 Facade 为子系统集提供了一个通用接口 - 因此客户端可以与该接口交互)
  • 改造是否使用任何其他设计模式,如果是,它是如何使用的

android facade retrofit retrofit2

5
推荐指数
2
解决办法
2071
查看次数