问题列表 - 第46007页

构造函数的设计模式

我受到设计问题的挑战,我将在下面介绍.

假设一个类(称为A)具有带有一堆参数的构造函数.由于在每个实例化中编写所有这些参数都很累,所以我编写了另一个类,称之为StyleSheetA,它封装了所有这些参数,并且是A构造函数的唯一参数.这样,​​我可以准备一些默认值StyleSheetA模板稍后将使用,如果需要,我可以修改它们.

在这一点上,我需要扩展A.假设B扩展A. B将有自己的样式表,即StyleSheetB.我认为StyleSheetB扩展StyleSheetA是合适的,所以使用一个样式表参数,B的构造函数也可以构造它的超类A.但是我担心这个设计可能有缺陷的可能性.例如,如果我决定为样式表添加getter/setter,该怎么办?是否有一种新颖的方式来处理所有这些情况?我错了吗?对于那些困惑的人,我在这里附上一些代码:


    class A
    {
        StyleSheetA ss;

        A(StyleSheetA ss)
        {
            this.ss = ss;
            // Do some stuff with ingredients of styleSheet
        }
    }
    class StyleSheetA
    {
        int n1;
        int n2;
        // :
        // :
        int n100;
    }

    class B extends A
    {
        B(StyleSheetB ss)
        {
            super(ss);
            // Do some stuff with ingredients of styleSheet
        }
    }
    class StyleSheetB extends StyleSheetA
    {
        int n101;
        int n102;
        // :
        // :
        int n200;
    }
Run Code Online (Sandbox Code Playgroud)

感谢您的任何帮助或建议,也欢迎任何评论家.

编辑:我正在使用java开发,因此没有泛型支持.

java constructor design-patterns

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

PHP + PDF换行符

我在Magento商店中有以下代码,它将客户地址添加到发票PDF中.有时地址行的地址对于地址标签来说太长了所以我添加了$ value = wordwrap($ text,10,"
\n"); 认为这可能会创造一个新的路线.然而,这似乎不适用于PDF文档,我最终得到一个有趣的符号,我喜欢这条线.有谁知道我怎么能换新线?

PS - 我的PHP知识非常基础.

if (!$order->getIsVirtual())
{
if ($this->y < 250)
{
$page = $this->newPage();
}

$this->_setFontRegular($page, 6);
$page->drawText('Ship to:', 75, 222 , 'UTF-8');

$shippingAddress = $this->_formatAddress($order->getShippingAddress()->format('pdf'));

$line = 185;
$this->_setFontRegular($page, 12);

$num_lines = count($shippingAddress);
$curr_line = 0;
foreach ($shippingAddress as $value)
{
$curr_line += 1;

if ($curr_line < $num_lines)
{
if ($value!=='')
{
$value = wordwrap($value, 20, "\n");
$page->drawText(strip_tags(ltrim($value)), 75, $line, 'UTF-8');
$line -=14;
}
}
}
} 
Run Code Online (Sandbox Code Playgroud)

php pdf magento

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

使用长度标准查询MongoDB

我在MongoDB Collection中有几个文件,带有一个字段'name'(这是一个String).

我该如何执行像这样的查询 7 <= name.length <= 14

ruby-on-rails mongodb mongoid

13
推荐指数
2
解决办法
6714
查看次数

Rails灯具创建顺序问题

我正在阅读Sitepoint的Simply Rails一书,并给出了这些模型:

story.rb

class Story < ActiveRecord::Base
    validates_presence_of :name, :link
    has_many :votes do
        def latest
            find :all, :order => 'id DESC', :limit => 3
        end
    end

    def to_param
        "#{id}-#{name.gsub(/\W/, '-').downcase}"
    end
end
Run Code Online (Sandbox Code Playgroud)

vote.rb

class Vote < ActiveRecord::Base
    belongs_to :story
end
Run Code Online (Sandbox Code Playgroud)

并给出了这个装置

stories.yml

one:
  name: MyString
  link: MyString

two:
  name: MyString2
  link: MyString2
Run Code Online (Sandbox Code Playgroud)

votes.yml

one:
  story: one

two:
  story: one
Run Code Online (Sandbox Code Playgroud)

这些测试失败:

story_test.rb

def test_should_have_a_votes_association
    assert_equal [votes(:one),votes(:two)], stories(:one).votes
  end

def test_should_return_highest_vote_id_first
    assert_equal votes(:two), stories(:one).votes.latest.first
  end
Run Code Online (Sandbox Code Playgroud)

但是,如果我颠倒了故事的顺序,对于第一个断言,并为第一个断言提供第一个投票,它通过

story_test.rb

def test_should_have_a_votes_association
    assert_equal [votes(:two),votes(:one)], stories(:one).votes …
Run Code Online (Sandbox Code Playgroud)

ruby rake unit-testing ruby-on-rails

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

C#控制台应用程序是否在当前用户帐户下运行?

在我打开我的大嘴并说这是一个控制台应用程序在c#中工作的默认方式之前我想得到一些人的意见.

基本上,我们有一个ac #console app,从字节流创建一个文件夹.很简单.他们现在想让它直接写入共享驱动器,只有少数人有读/写特权.

认为,只要他们在登录时像privelaged用户一样踢它,它就会复制到共享驱动器.

不幸的是,他们想要这些信息而不创建文件夹并首先共享.叹气 b/c本来太容易测试爆破的东西.

c# exe

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

从ArrayList中删除多个元素

我有一堆索引,我想删除这些索引中的元素ArrayList.我不能做一个简单的remove()s 序列,因为元素在每次移除后都会移位.我该如何解决这个问题?

java arraylist

33
推荐指数
4
解决办法
5万
查看次数

.NET 3.5中ExpandoObject的替代品,开销最小

如何在开销最小的.NET 3.5应用程序中模仿ExpandoObject的功能?到目前为止,我最好的领导是使用Lin Fu框架(http://www.codeproject.com/KB/cs/LinFuPart2.aspx),但我认为可能会有更好的东西.

为了更好地了解我的目标,我的目标是从a的参数动态创建类型MethodInfo.所以,基本上我想转此:

    public class ServiceObject
    {
        public void Execute(string TransformMeIntoAProperty);
    }
Run Code Online (Sandbox Code Playgroud)

    public class ServiceObjectExecuteSignature
    {
        public string TransformMeIntoAProperty{ get; set;}
    }
Run Code Online (Sandbox Code Playgroud)

在运行时.我必须能够使用Reflection访问参数,因为我使用的是Linq表达式.

c# runtime dynamic .net-3.5 expandoobject

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

EJB3与数据访问对象

我正在开发一个项目,我们需要决定如何公开我们的持久层.

目前桌面上有两个选项:

1)使用普通DAO.这些将实现一个接口,并在作为EJB的业务组件中注入(可能使用Weld).在内部,他们会使用JPA/Hibernate来实现持久性.

2)不是使用Weld注入DAO,而是将它们实现为EJB,并在业务组件中注入@EJB.

当我们不使用其功能时(例如,事务管理 - 业务层处理此问题),将EJB用于持久层是否真的有意义?

使用EJB over Weld(或反过来)是否有任何性能损失?

您认为哪种选择最好?

dao dependency-injection ejb-3.0

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

相互递归问题

如何将两个相互递归的函数相互更改为一个线性递归?我是否必须在单个方法中同时使用这两种方法?

java recursion mutual-recursion

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

如何查看哪些git分支正在跟踪哪个远程/上游分支?

我知道我可以这样做git branch --all,这向我展示了本地和远程分支,但是向我展示它们之间的关系并没有那么有用.

如何以显示哪个本地分支正在跟踪哪个远程的方式列出分支?

git

771
推荐指数
9
解决办法
31万
查看次数