标签: factory

静态工厂方法以避免重复对象

我正在阅读Joshua Bloch的" Effective Java Programming Language Guide ".
他解释说静态工厂方法可以用来避免不必要的重复对象.
我对此并不十分了解.
谁能解释一下?

java methods factory

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

我什么时候应该使用工厂在Perl中包装构造函数?

为什么要使用工厂在Perl中包装构造函数?一个例子会有所帮助.

perl constructor factory

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

扭曲的多个同时工厂和协议:相同的服务,不同的端口

问候,论坛.

我正在开发一个使用Twisted来管理网络的Python程序.该程序的基础是一个TCP服务,用于侦听多个端口上的连接.但是,我不是使用一个Twisted工厂来处理每个端口的协议对象,而是尝试为每个端口使用单独的工厂.这样做的原因是强制连接到不同端口的客户端组之间的分离.

不幸的是,似乎这种架构并不完全工作:连接到一个端口的客户似乎所有的工厂(例如,通过各厂所使用的协议类包括"self.factory.clients.append(个体经营)中可用'声明...而不是将给定的客户端仅添加到特定端口的工厂,客户端被添加到所有工厂),每当我在一个端口上关闭服务时,所有端口上的监听器也会停止.

我已经和Twisted合作了一段时间,并且担心我根本不完全理解它的工厂类是如何管理的.

我的问题是:是否根本不可能在不同的端口上使用相同工厂和相同协议的多个同时实例(没有这些实例踩在彼此的脚趾上)?

python factory protocols twisted

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

确保A类只能由B类创建

我已经在SO(和其他地方)上阅读了关于这个主题的一些讨论,但没有能够收集到明确的答案.

我想确保给定的类A只能由特定的类B创建.在C++中,我将构建一个私有的构造函数,并将B指定为朋友.现在只有B才能创造A.

在C#中这样做的惯用方法是什么,如果确实有一个呢?

c# constructor factory

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

没有if-else块的JavaScript Factory模式

我想知道是否有更好的方法来实现createEmployee(),它使用字典或其他方式快速查找所请求的类型而不是if-else块.

function Clerk( options ) {
            this.hourRate = options.hourRate || 20;
            this.firstName = options.firstName || "no first name";
            this.lastName = options.lastName || "no last name";
            this.id = options.id || "-9999999999";
        }

        function Manager( options) {
            this.hourRate = options.hourRate || 200;
            this.firstName = options.firstName || "no first name";
            this.lastName = options.lastName || "no last name";
            this.id = options.id || "-9999999999";
            this.yearBonus = options.yearBonus || "200000";
        }

        function Teacher( options) {
            this.hourRate = options.hourRate || 100;
            this.firstName = options.firstName || "no first …
Run Code Online (Sandbox Code Playgroud)

javascript design-patterns factory factory-pattern

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

我如何将以下"类引用"机制从Delphi转换为C++ 11?

我已经使用了一段时间的C++,偶尔会让我感到困惑的一件事是我还没有弄清楚如何在C++中使用这个Delphi Factory构造.

我无法弄清楚的关键部分是如何在C++中传递对类类型的引用.在Delphi中,我们有"TClass"类型.这种类型的变量是对某些类的引用.我们可以使用class of MyClass语法来限制类引用可以引用的类来定义新的类引用类型.

注意术语"Delphi类引用"=/="类的C++实例"

对于那些不熟悉Pascal的人来说,变量是声明的variable: type而不是C风格type variable.同样,函数的返回类型出现参数列表和名称之后.

我已经在下面的例子中浓缩了语法,以减少它的样板,所以对Delphi开发人员道歉,因为它的格式很糟糕.关键部分在评论中描述.

program demo;

{$APPTYPE CONSOLE}

// declarations

type

  Base = class
  public constructor Create(name: string); virtual;
  end;

  // Class reference which refers to Base and its descendants
  BaseClass = class of Base;

  ChildA = class(Base)
  public constructor Create(name: string); override;
  end;

  ChildB = class(Base)
  public constructor Create(name: string); override;
  end;

// implementation

constructor Base.Create(name: string);
begin
  WriteLn('Base says hi to ' + name); …
Run Code Online (Sandbox Code Playgroud)

c++ delphi factory class-reference

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

新功能返回新功能

我对JavaScript中的new关键字感到困惑.以下面的例子为例

function A (value) {
    this.a = value;
}

function B (value) {
    return new A (value);
}

console.log (    B (0)); // { a: 0 }
console.log (new B (0)); // { a: 0 }
Run Code Online (Sandbox Code Playgroud)

我希望能够创建一个新的"A"实例,而不必使用"new".为此,我有"B()",然而,当我调用"new B()"时,它似乎与"B()"做同样的事情,好像"new"被忽略了.在这两种情况下,instanceof等于"A".到底发生了什么?

javascript oop factory instance node.js

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

提交时出错:TypeError:dataService.Login不是函数

单击表单上的"提交"按钮时发生错误.

LoginController和controllerAs在路由配置中定义

Angular版本:AngularJS v1.3.11


dataService.js文件

    'use strict';

        app.factory('dataService',['$http',DataService]);

        function DataService($http) {
            var urlBase='http://washerycloud.cloudapp.net/v1/user/';

            var service = {};

            service.Login =Login;
            service.Register= Register;
            service.Store = StoreID;
            service.Update = Update;
            service.Delete = Delete;

            return service;

   /**Login function*/
            function Login(user) {
                return $http.get(urlBase + 'login',{params: {name: user.name, password: user.password}}).
            then(handleSuccess, handleError('Error login'));
            }

        /**Register function*/
            function Register(user) {
                return $http.get(urlBase + 'create',
                    {params:  { name: user.name, surname: user.surname, telephone: user.telephone,
                                email: user.email, username: user.username, password: user.password }})
                    .then(handleSuccess, handleError('Error register user'));
            }





// private …
Run Code Online (Sandbox Code Playgroud)

javascript factory angularjs

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

应该删除工厂方法创建的对象在哪里?

创建对象的方式和位置应该returnShapeType删除?
这是一个工厂方法演示程序.

请出示代码.

class Shape
{
public:
    Shape() {}
    virtual void print() {std::cout << "\nFrom shape print";}
};

class Triangle: public Shape
{
public:
    Triangle(){}
    virtual void print() {std::cout << "\nFrom triangle print";}
};

class Rectangle: public Shape
{
public:
    Rectangle(){}
    virtual void print() {std::cout << "\nFrom rect print";}
};

class CreateShapeObject
{
public:
    CreateShapeObject() {}

    Shape *returnShapeType( std::string arg )
    {
        if (arg == "Triangle")
            return new Triangle;
        else if (arg == "Rectangle")
            return new Rectangle;
    } …
Run Code Online (Sandbox Code Playgroud)

c++ design-patterns factory factory-pattern

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

如何制作Python工厂类

我希望能够基于枚举类创建对象,并使用字典。像这样:

class IngredientType(Enum):
    SPAM        = auto() # Some spam
    BAKE_BEANS  = auto() # Baked beans
    EGG         = auto() # Fried egg

class Ingredient(object):
    pass    
class Spam(Ingredient):
    pass
class BakedBeans(Ingredient):
    pass
class Egg(Ingredient):
    pass


class IngredientFactory(object):
    """Factory makes ingredients"""

    choice = {
        IngredientType.SPAM: IngredientFactory.MakeSpam,
        IngredientType.BAKED_BEANS: IngredientFactory.MakeBakedBeans,
        IngredientType.EGG: IngredientFactory.MakeEgg
    }

    @staticmethod
    def make(type):
        method = choice[type]
        return method()

    @staticmethod
    def makeSpam():
        return Spam()

    @staticmethod
    def makeBakedBeans():
        return BakedBeans()

    @staticmethod
    def makeEgg():
        return Egg()
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:

NameError: name 'IngredientFactory' is not defined
Run Code Online (Sandbox Code Playgroud)

由于某些原因,无法创建字典。我在哪里错了?

python enums dictionary factory

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