我受到设计问题的挑战,我将在下面介绍.
假设一个类(称为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开发,因此没有泛型支持.
我在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) 我在MongoDB Collection中有几个文件,带有一个字段'name'(这是一个String).
我该如何执行像这样的查询 7 <= name.length <= 14
我正在阅读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) 在我打开我的大嘴并说这是一个控制台应用程序在c#中工作的默认方式之前我想得到一些人的意见.
基本上,我们有一个ac #console app,从字节流创建一个文件夹.很简单.他们现在想让它直接写入共享驱动器,只有少数人有读/写特权.
我认为,只要他们在登录时像privelaged用户一样踢它,它就会复制到共享驱动器.
不幸的是,他们想要这些信息而不创建文件夹并首先共享.叹气 b/c本来太容易测试爆破的东西.
我有一堆索引,我想删除这些索引中的元素ArrayList.我不能做一个简单的remove()s 序列,因为元素在每次移除后都会移位.我该如何解决这个问题?
如何在开销最小的.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表达式.
我正在开发一个项目,我们需要决定如何公开我们的持久层.
目前桌面上有两个选项:
1)使用普通DAO.这些将实现一个接口,并在作为EJB的业务组件中注入(可能使用Weld).在内部,他们会使用JPA/Hibernate来实现持久性.
2)不是使用Weld注入DAO,而是将它们实现为EJB,并在业务组件中注入@EJB.
当我们不使用其功能时(例如,事务管理 - 业务层处理此问题),将EJB用于持久层是否真的有意义?
使用EJB over Weld(或反过来)是否有任何性能损失?
您认为哪种选择最好?
如何将两个相互递归的函数相互更改为一个线性递归?我是否必须在单个方法中同时使用这两种方法?
我知道我可以这样做git branch --all,这向我展示了本地和远程分支,但是向我展示它们之间的关系并没有那么有用.
如何以显示哪个本地分支正在跟踪哪个远程的方式列出分支?