标签: facade

什么是外墙类的好名字?

一点背景:我们正在建立一个与科学模型合作的图书馆/框架.我们有一个接口Model,它定义了模型必须实现的操作,这是非常小的.即:Model界面从模型实现者的角度定义模型的契约.

该框架增加了大量的模型周围的其他的功能,但现在的客户端代码有使用一堆其他类,如访问功能ModelInfo,ModelHost,ModelInstance,等.

在我们使用这个框架的应用程序中,我们不希望实际上必须处理运行模型等所有这些机制.所以我们决定使用façade模式将框架功能包装在一个易于使用的框架中.使用对象.(我们已经将这种模式应用到框架的其他部分,并取得了很好的成功.)

这是一个问题:假设我们已经有了一个接口Model,那么façade类的名字是什么?Model界面框架和之间的合同模型实现,以及新的类将定义框架和之间的合同客户端应用程序.

或者,更一般地说:当我们有一个库或框架提供的抽象时,我们如何命名抽象的"双方",以便清楚地识别抽象的"提供者"和"消费者"接口

(如果重要的是,对于这个项目,我们使用的是Java 6.)

oop design-patterns facade naming-conventions

19
推荐指数
1
解决办法
7176
查看次数

用c ++示例解释Facade模式?

我查看了维基百科的文章,似乎它缺少代码示例的c ++版本.如果没有这个,我无法完全理解Facade模式,你能用C++帮我解释一下吗?

c++ design-patterns facade

17
推荐指数
3
解决办法
2万
查看次数

Java EE中的Facade有什么意义?

我真的不明白外立面的意义.

public abstract class AbstractFacade<T> {

    private Class<T> entityClass;

    public AbstractFacade(Class<T> entityClass) {
        this.entityClass = entityClass;
    }

    protected abstract EntityManager getEntityManager();

    public void create(T entity) {
        getEntityManager().persist(entity);
    }

    public void edit(T entity) {
        getEntityManager().merge(entity);
    }

    public void remove(T entity) {
        getEntityManager().remove(getEntityManager().merge(entity));
    }

    public T find(Object id) {
        return getEntityManager().find(entityClass, id);
    }

    public List<T> findAll() {
        CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(entityClass));
        return getEntityManager().createQuery(cq).getResultList();
    }

    public List<T> findRange(int[] range) {
        CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(entityClass));
        Query q = getEntityManager().createQuery(cq);
        q.setMaxResults(range[1] - range[0]); …
Run Code Online (Sandbox Code Playgroud)

java design-patterns ejb facade java-ee

17
推荐指数
3
解决办法
2万
查看次数

包装类在Java中使用的设计模式?

我找到了一篇旧帖子,但没有说明我对Wrapper Classes使用的设计模式的理解,而且,从维基百科阅读时我没有得到任何明确的信息.

包装类是否真的使用任何设计模式?

如果使用模式,那么其模式是它的这些:Decorator Pattern,Facade PatternAdapter Pattern

design-patterns facade decorator adapter wrapper

15
推荐指数
3
解决办法
4424
查看次数

为什么使用Facade模式用于EJB会话bean

我想问一下访问EJB会话Bean时使用Facade Pattern的原因是什么.在我的Netbeans 6.9.1,如果我做New> Sessions Bean for Entity Classes,让说,我选择User实体,然后Netbeans的会看到这个代码

AbstractFacade.java
public abstract class AbstractFacade<T> {
    private Class<T> entityClass;

    public AbstractFacade(Class<T> entityClass) {
        this.entityClass = entityClass;
    }

    protected abstract EntityManager getEntityManager();

    public void create(T entity) {
        getEntityManager().persist(entity);
    }

    public T edit(T entity) {
        return getEntityManager().merge(entity);
    }

    public void remove(T entity) {
        getEntityManager().remove(getEntityManager().merge(entity));
    }

    public T find(Object id) {
        return getEntityManager().find(entityClass, id);
    }

    public List<T> findAll() {
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(entityClass));
        return getEntityManager().createQuery(cq).getResultList();
    }

    public List<T> findRange(int[] …
Run Code Online (Sandbox Code Playgroud)

netbeans ejb facade java-ee

14
推荐指数
2
解决办法
3万
查看次数

Laravel文件与存储门面

laravel 5.2 FileStorage外墙之间是否有任何差异?
看起来他们都使用相同的合同.我File在laravel文档中看不到任何文档.如果它们不同,它们之间可能相互影响?

storage file facade laravel

13
推荐指数
1
解决办法
4096
查看次数

Laravel差异`在app-> bind`和`app-> singleton`之间?

我一直试图找出在Laravel中设置服务提供商时的区别app->bindapp->singleton区别.我的印象是,如果我注册singleton它,每次调用它时都会返回相同的对象实例,bind这将是一个新实例.

这是一个简单的例子:

正面:

use Illuminate\Support\Facades\Facade;

class DataFacade extends Facade
{
    protected static function getFacadeAccessor() { 
        return 'Data';
    }
}
Run Code Online (Sandbox Code Playgroud)

服务提供者:

use Illuminate\Support\ServiceProvider;

class DataServiceProvider extends ServiceProvider
{
    public function register() {
        $this->app->singleton('Data', function() {
            return new Data;
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

类:

class Data
{
    public $data = [];

    public function get($key)
    {
        return isset($this->data[$key]) ? $this->data[$key] : null;
    }

    public function set($key, $val)
    {
        $this->data[$key] = $val;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我们做类似的事情:

$instance = …
Run Code Online (Sandbox Code Playgroud)

singleton facade laravel laravel-4

12
推荐指数
1
解决办法
6791
查看次数

测试 Facade 时无法重新声明 ::shouldReceive()

根据Laravel 文档,我应该能够通过 模拟外观Object::shouldReceive(),但是当我这样做时,它说我无法重新声明该方法。当我在浏览器中查看该视图时,该视图可以正常工作,我只需要弄清楚如何正确测试它。

Cannot redeclare Mockery_1_Facades_MyService::shouldReceive() in /path-to-project/vendor/mockery/mockery/library/Mockery/Loader/EvalLoader.php(16) : eval()'d code on line 672

这是我的测试:

public function testSend()
{
    MessageService::shouldReceive('find')->once()->with(1);

    $this->call('GET', '/message/1/send');

    $this->assertRedirectedToRoute('message.index');
}
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

public function send($id)
{
    $message = MessageService::find($id);
    $this->messageService->sendBroadcast($message);

    return Redirect::route('message.index')
        ->with('message', "Sending message: {$message->name}, stand by...");
}
Run Code Online (Sandbox Code Playgroud)

php unit-testing facade laravel

11
推荐指数
1
解决办法
5740
查看次数

Symfony 如何在我的服务中获取容器

我有项目,在这个项目中,我有很大的自己的服务,它庞大而复杂,有自己的依赖项等......我想为这个服务创建,目的是使用我的服务controllers

$myService = $this->container->get('service_from_my_domain');
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在我的门面内部访问container服务的依赖项。我只知道一种方法 - 是在 yaml 配置中将依赖注入到服务中。
但是还有其他方法可以做到吗?喜欢:

$dependency = Container::getInstance()->get('my_dependency_service');
Run Code Online (Sandbox Code Playgroud)

我找到了这个答案,但是使用全局变量感觉就像回到了过去......

PS:我不想通过 yaml 配置(不是构造函数注入或 setter 注入)注入依赖项,因为我在这里不需要 IoC()。

php design-patterns facade inversion-of-control symfony

11
推荐指数
2
解决办法
2万
查看次数

隐藏jar文件中的类

是否真的不可能在jar文件中隐藏某些类?

我希望不允许直接实例化类以使其更灵活.这个罐子里只能看到工厂(或立面).

除了创建两个项目之外,还有其他办法解决这个问题吗?(两个项目:第一个包含类(实现),另一个引用第一个并包含工厂;后面只引用第二个)

java information-hiding jar facade factory-pattern

10
推荐指数
2
解决办法
1万
查看次数