我有一些关于适配器模式的问题.我知道类适配器继承自adaptee,而对象适配器将adaptee作为对象而不是继承自它.
您何时在对象适配器上使用类适配器,反之亦然?另外,使用类适配器和对象适配器的权衡取舍有哪些权衡?
我有2个项目.
项目#2引用了项目#1
现在我需要在Project#1中引用Project#2,但是vs.net抱怨循环依赖.
有没有办法解决这个问题?
我在HAML代码中看到了这个运算符.我想知道它是为了什么.
我看到以下作品:
> ?{
=> "{"
> ?\s
=> " "
> ?a
=> "a"
Run Code Online (Sandbox Code Playgroud)
这不起作用:
> ?ab
SyntaxError: (irb):4: syntax error, unexpected '?'
Run Code Online (Sandbox Code Playgroud)
所以我认为它需要一个字符作为参数并返回一个带有该字符的字符串.
问题:
我想知道状态机是否只是工作中的状态模式,或者这两者之间是否存在差异?
我发现这篇文章的标题是"状态设计模式与状态机",但在一天结束时他只说状态模式使状态机过时但后来没有描述状态机究竟是什么状态机与实施国家格局.
我指着一些技巧并遇到了这个.在以下代码中:
public class TestClass1 {
static int a = 10;
public static void main(String ar[]){
TestClass1 t1 = null ;
System.out.println(t1.a); // At this line
}
}
Run Code Online (Sandbox Code Playgroud)
t1对象是null.为什么这段代码不抛NullPointerException?
我知道这不是访问static变量的正确方法,但问题是关于NullPointerException.
界面隔离原则只是单一责任原则的替代吗?
我认为,如果我的类满足SRP,则无需提取多个接口.
所以ISP看起来像解决方案,以防我们因某些原因打破SRP.
我对吗 ?
design-patterns single-responsibility-principle solid-principles interface-segregation-principle
我正在运行这部分测试:
describe Dictionary do
before do
@d = Dictionary.new
end
it 'can check whether a given keyword exists' do
@d.include?('fish').should be_false
end
Run Code Online (Sandbox Code Playgroud)
使用此代码:
class Dictionary
def initialize
@hash = {}
end
def add(new_entry)
new_entry.class == String ? @hash[new_entry] = nil : new_entry.each { |noun, definition| @hash[noun] = definition}
end
def entries
@hash
end
def keywords
@hash.keys
end
def include?(word)
if @hash.has_key?(word)
true
else
false
end
end
end
Run Code Online (Sandbox Code Playgroud)
我不知道我做错了什么,但我的测试仍然失败并说:
> 1) Dictionary can check whether a given keyword exists
> Failure/Error: …Run Code Online (Sandbox Code Playgroud) 我跟着spork railscast视频,当我试图守卫时,它给了我以下错误:
Guard is now watching at '/Users/m/work/'
Starting Spork for Test::Unit & RSpec
Couldn't find a supported test framework that begins with 'testunit'
Supported test frameworks:
( ) Cucumber
(*) RSpec
Legend: ( ) - not detected in project (*) - detected
Using RSpec
Preloading Rails environment
Loading Spork.prefork block...
Spork is ready and listening on 8989!
--> ERROR: Could not start Spork server for Test::Unit & RSpec. Make sure you can use it manually first.
Guard::RSpec …Run Code Online (Sandbox Code Playgroud) 所以我已经阅读了有关访客模式的所有文档,我仍然非常困惑.我从另一个问题中得到了这个例子,有人能帮我理解吗?例如,我们何时使用访客设计模式?我想我可能已经理解了一些,但我只是无法看到更大的图景.我如何知道何时可以使用它?
class equipmentVisited
{
virtual void accept(equipmentVisitor* visitor) = 0;
}
class floppyDisk : public equipmentVisited
{
virtual void accept(equipmentVisitor* visitor);
}
class processor : public equipmentVisited
{
virtual void accept(equipmentVisitor* visitor);
}
class computer : public equipmentVisited
{
virtual void accept(equipmentVisitor* visitor);
}
class equipmentVisitor
{
virtual void visitFloppyDisk(floppyDisk* );
virtual void visitProcessor(processor* );
virtual void visitComputer(computer* );
}
// Some additional classes inheriting from equipmentVisitor would be here
equipmentVisited* visited;
equipmentVisitor* visitor;
// Here you initialise visited and …Run Code Online (Sandbox Code Playgroud) 我在大多数测试中都有以下代码:
describe 'index'
let(:company) { FactoryGirl.create(:company) }
let(:user) { FactoryGirl.create(:user, company: company) }
before do
sign_in user
visit products_path
end
...
end
Run Code Online (Sandbox Code Playgroud)
但我收到以下警告:
WARNING: let declaration 'user' accessed in a 'before(:all)'
Run Code Online (Sandbox Code Playgroud)
我的问题是,这样做的正确方法是什么?我找不到有关警告本身的更多信息.
谢谢!
编辑:我的目标是使用用户变量,以便我可以将其传递给sign_in,签名用户,然后在另一个测试中使用它(我检查用户的公司属性)
rspec ×3
ruby ×3
rspec3 ×2
adapter ×1
architecture ×1
c# ×1
c++ ×1
dependencies ×1
guard ×1
interface-segregation-principle ×1
java ×1
javac ×1
oop ×1
operators ×1
single-responsibility-principle ×1
spork ×1
state ×1
static ×1
visitor ×1