标签: factory

Silly rails问题:类声明中的未定义方法

我有一个用户类,我试图附加工厂创建的配置文件.这是班级:

class User < ActiveRecord::Base
  acts_as_authentic
  has_one :profile

  after_create {self.profile = ProfileFactory.create_profile(self.role)}

end
Run Code Online (Sandbox Code Playgroud)

工厂看起来像这样

class ProfileFactory
    def self.create_profile(role)
      String s = "#{role}#{"Profile"}"
      Object.const_get(s).new
    end
end
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它不承认自己是一个用户.这是我在进行ProfileFactory.create_profile调用时遇到的错误

未定义的方法'角色' #<Class:0x2304218>

用户对象具有以下角色:在其迁移中声明的字符串.

任何帮助表示赞赏谢谢.

factory ruby-on-rails

3
推荐指数
1
解决办法
3214
查看次数

在以下代码中使用工厂类有什么好处?

这是代码:

SAXParserFactory mySAXParserFactory = SAXParserFactory.newInstance();
SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
Run Code Online (Sandbox Code Playgroud)

为什么要使用它,如果你可以使用更直观的东西,如:

SAXParser mySAXParser = new SAXParser();
Run Code Online (Sandbox Code Playgroud)

java factory

3
推荐指数
1
解决办法
836
查看次数

工厂,服务和工具类是什么(以及它们之间的区别)?软件项目中还有更多概念吗?

我试图了解一个典型的软件项目的概念,但我找不到一篇关于这个的好文章.

  • 什么是工厂?
  • 什么是服务?
  • 什么是util类?

  • 它们之间的主要区别是什么?(例如,什么使工厂不是服务等)

  • 软件项目中是否还有其他常见的概念?

service factory

3
推荐指数
1
解决办法
1533
查看次数

我如何子类threading.Event?

在Python 2.7.5中:

from threading import Event

class State(Event):
    def __init__(self, name):
        super(Event, self).__init__()
        self.name = name

    def __repr__(self):
        return self.name + ' / ' + self.is_set()
Run Code Online (Sandbox Code Playgroud)

我明白了:

TypeError:调用元类base
函数时出错()参数1必须是代码,而不是str

为什么?

我所知道的关于线程的一切.事件我从以下网站学习:http://docs.python.org/2/library/threading.html?highlight = threading # event-objects

当它说threading.Event()是类threading.Event ???的工厂函数时它是什么意思?(呃......看起来对我很平常).

python factory metaclass subclass

3
推荐指数
1
解决办法
768
查看次数

jQuery UI Widget Factory私有属性

我正在研究jQuery UI Widget,但我遇到了一些问题.这是我实例化插件的方式.

$('#myId0, #myId1').mywidgetname();
Run Code Online (Sandbox Code Playgroud)

这是我的插件代码:

;(function ( $, window, document, undefined ) {
  $.widget( "namespace.mywidgetname" , {
    _create: function(){
      debugger;
      this._myPrivateProperty = 2;
....
Run Code Online (Sandbox Code Playgroud)

问题是,当调试器第二次停止时,我已经将this._myPrivateProperty实例化为值2.我认为该小部件将被实例化两次,但事实并非如此.

另外,如果我为每个元素指定不同的选项,如下所示:

$('#myId0').mywidgetname({myVarA: 'someText'});
$('#myId1').mywidgetname({myVarB: 'someText'});
Run Code Online (Sandbox Code Playgroud)

变量this.options对于每个变量都是不同的.现在有人如何将"私人"财产私有化?

谢谢

jquery factory jquery-ui protected widget

3
推荐指数
1
解决办法
1161
查看次数

Angular JS:异步工厂调用问题

我是棱角分明的新手,我正在创建一个简单的应用程序.它在项目之间导航,通过JSON拉入:

http://plnkr.co/edit/FTfa1rcVaf85xTu65oSR?p=preview

我也在使用工厂,在那里我打电话,get或者getOne,这样它$http在一个地方处理,只有在数据尚未被提取的情况下才调用它.

当你在主页上开始时这一切都很好,但是当你在一个单独的项目页面上开始时,两个get并且同时getOne被调用,拉入重复的数据.您可以通过在其自己的窗口中打开Plunker并转到诸如的URL来测试/#/projects/1.

我知道为什么会这样,我只是无法弄清楚如何阻止它.

有没有一个简单的解决方案或我是否完全错误的方式?

谢谢参观.

asynchronous factory angularjs angular-ui-router

3
推荐指数
1
解决办法
3012
查看次数

没有if,切换实现Factory的最佳方法

我正在寻找许多方法来实现Java中的Factory模式,但仍然找不到一个完美的方法,如果/ switch plus不使用反射,则不会受到影响.我找到的最好的一个是Tom Hawtin在这里的答案:https://stackoverflow.com/a/3434505/1390874

但我最担心的是它将匿名类的HashMap存储在内存中.

问题是除了Tom Hawtin的答案之外,人们还会考虑使用Class.newInstance()吗?这样可以避免我们在内存中存储不必要的匿名类吗?加上代码会更干净.

它看起来像这样:

class MyFactory {
    private static final Map<String,Class> factoryMap =
        Collections.unmodifiableMap(new HashMap<String,Class>() {{
            put("Meow", Cat.class);
            put("Woof", Dog.class);
    }});

    public Animal createAnimal(String action) {
        return (Animal) factoryMap.get(action).newInstance();
    }
}
Run Code Online (Sandbox Code Playgroud)

java design-patterns factory factory-pattern

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

使用随机数据生成数组而不使用for循环

我正在使用faker.js库生成随机数据,我有几个工厂函数生成一系列用户数据:

    const createUser = () => {
      return {
        name: faker.name.findName(),
        email: faker.internet.email(),
        address: faker.address.streetAddress(),
        bio: faker.lorem.sentence(),
        image: faker.image.avatar()
      }
    }

    const createUsers = (numUsers = 5) => {
      return Array(numUsers).fill(createUser());
    }

    let fakeUsers = createUsers(5)
    console.log(fakeUsers)
Run Code Online (Sandbox Code Playgroud)

这种Array.fill方法的问题在于它返回相同的数据n次数.我希望从我的工厂退回5个不同的用户.

我该怎么做呢?

javascript arrays factory factory-pattern faker

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

在有或没有自动接线的情况下,Symfony 4 setter注入无法捆绑使用

我以为我完全理解了Symfony的自动装配行为,但肯定有一些我想念的东西,希望有人能填补空白。

首先要解决三个问题:

  • 在主应用程序和捆绑软件中,Symfony自动接线行为是否有所不同?
  • 如果您要求Symfony自动绑定捆绑服务,是否完全忽略捆绑services.yaml文件中的服务定义?
  • Symfony 4中的setter注入功能是否存在已知问题?

我在使用setter注入的捆绑软件中有一个服务定义,但是当我要求Symfony自动捆绑我的捆绑软件服务,甚至当我要求Symfony从自动装配中排除服务时,Symfony似乎会完全忽略它。

我的应用程序正在使用Symfony v4.1.3

我已将Bundle包含在我的应用程序bundles.php文件中。

<?php

return [
  //... core bundles,
  Acme\\Symfony\\AcmeCustomBundle\\AcmeCustomBundle::class => ['all' => true] 
];
Run Code Online (Sandbox Code Playgroud)

defaultSymfony应用程序services.yaml文件中,我已要求Symfony使用以下内容自动捆绑服务:

Acme\Symfony\AcmeCustomBundle\:
    resource: '../vendor/acme-symfony/custom-bundle/*'
    exclude: '../vendor/acme-symfony/custom-bundle/{Model,Tests}'
Run Code Online (Sandbox Code Playgroud)

services.yaml位于中的捆绑文件中../vendor/acme-symfony/custom-bundle/Resources/config/services.yaml,我具有以下内容:

parameters:

services:
    Acme\Symfony\AcmeCustomBundle\Search\ConfigurationReader:
      calls:
        - method: setIndex
          arguments:
            $index: '%elasticsearch.index%'
        - method: setSchema
          arguments:
            $schema: '%elasticsearch.schema%'  
Run Code Online (Sandbox Code Playgroud)

这些参数是在我的bundle扩展类中设置的(扩展可配置扩展名),并且我已经验证了这些参数确实存在并且正在使用以下方法进行设置:

$container->setParameter('elasticsearch.index', $mergedConfigs['elasticsearch']['index']);
$container->setParameter('elasticsearch.schema', $mergedConfigs['elasticsearch']['schema']);
Run Code Online (Sandbox Code Playgroud)

现在回到问题所在。即使我通过以下操作告诉Symfony不要自动装配以上服务,Symfony也不会执行setter注入:

 Acme\Symfony\AcmeCustomBundle\:
    resource: '../vendor/acme-symfony/custom-bundle/*'
    exclude: '../vendor/acme-symfony/custom-bundle/{Model,Tests,Search}'
Run Code Online (Sandbox Code Playgroud)

但是,当我使用Symfony时,确实可以配置我的服务

  • 关闭上述服务的自动接线
  • 使用工厂创建服务的方法

这种回答回答了我上面的第二个问题,但我不是100%确信。尽管如此,我宁愿不必使用工厂类来解决Symfony可能存在的问题,或者我对二传手注入/自动装配的工作原理缺乏了解。

谁能看到我显然想念的东西?

factory dependency-injection autowired symfony symfony4

3
推荐指数
1
解决办法
1154
查看次数

有什么方法可以将元素作为纯JavaScript的函数?

我一直感到困惑,因为我发现以下两个案例的结果与我预期的不同;

console.log(typeof document.querySelector('.holder'));
console.log(typeof $('.holder'));
Run Code Online (Sandbox Code Playgroud)

浏览器说这2种情况是相同的变量类型,即object。但是,当我尝试添加.each方法时,它说document.querySelector('.holder')不是函数。

console.log(typeof document.querySelector('.holder'));
console.log(typeof $('.holder'));
Run Code Online (Sandbox Code Playgroud)
    'use strict'
    const createMenuTable = (root, clips) => {
      return root.each(() => {
        console.log(root);
      })
    }
    let myTable = createMenuTable(
      document.querySelectorAll('.table'), 
      document.querySelector('.layerGroup')
    ); // When I change the `root` argument to the `$('.table')`, it runs w/o an error.
Run Code Online (Sandbox Code Playgroud)

未捕获的TypeError:root.each不是一个函数

我的目标是element像使用jQuery一样使用普通JavaScript 获得一个函数,但不知道如何解决此问题。

值得赞赏的是有人可以向我解释为什么这两个案例即使变量类型相同也不能给出相同的结果。

javascript variables each jquery factory

3
推荐指数
1
解决办法
64
查看次数