小编Dav*_*uth的帖子

适配器模式:类适配器与对象适配器

我有一些关于适配器模式的问题.我知道类适配器继承自adaptee,而对象适配器将adaptee作为对象而不是继承自它.

您何时在对象适配器上使用类适配器,反之亦然?另外,使用类适配器和对象适配器的权衡取舍有哪些权衡?

oop design-patterns software-design adapter

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

循环依赖

我有2个项目.

项目#2引用了项目#1

现在我需要在Project#1中引用Project#2,但是vs.net抱怨循环依赖.

有没有办法解决这个问题?

c# dependencies visual-studio package-design

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

一元问号(?)运算符有什么作用?

我在HAML代码中看到了这个运算符.我想知道它是为了什么.

我看到以下作品:

> ?{
=> "{" 
> ?\s
=> " " 
> ?a
=> "a" 
Run Code Online (Sandbox Code Playgroud)

这不起作用:

> ?ab
SyntaxError: (irb):4: syntax error, unexpected '?'
Run Code Online (Sandbox Code Playgroud)

所以我认为它需要一个字符作为参数并返回一个带有该字符的字符串.

问题:

  1. 这个运营商做什么?
  2. 什么时候应该使用它?
  3. 如果它真的只创建一个单字符串,为什么它包含在语言中呢?它不会破坏语言的正交性吗?有什么好处?

ruby operators

27
推荐指数
2
解决办法
4627
查看次数

状态机和状态模式的实现有什么区别?

我想知道状态机是否只是工作中的状态模式,或者这两者之间是否存在差异?

我发现这篇文章的标题是"状态设计模式与状态机",但在一天结束时他只说状态模式使状态机过时但后来没有描述状态机究竟是什么状态机与实施国家格局.

architecture state design-patterns state-machine

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

为什么Java编译器允许通过null对象进行静态变量访问?

我指着一些技巧并遇到了这个.在以下代码中:

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.

java static javac nullpointerexception

27
推荐指数
2
解决办法
4810
查看次数

接口隔离原则只是单一责任原则的替代吗?

界面隔离原则只是单一责任原则的替代吗?

我认为,如果我的类满足SRP,则无需提取多个接口.

所以ISP看起来像解决方案,以防我们因某些原因打破SRP.

我对吗 ?

design-patterns single-responsibility-principle solid-principles interface-segregation-principle

26
推荐指数
2
解决办法
2133
查看次数

rspec失败错误:假设错误响应`false?`

我正在运行这部分测试:

 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)

ruby rspec rspec3

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

Guard,Spork,Rspec和Rails的问题3

我跟着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)

rspec ruby-on-rails guard spork ruby-on-rails-3

25
推荐指数
2
解决办法
5567
查看次数

访客模式解释

所以我已经阅读了有关访客模式的所有文档,我仍然非常困惑.我从另一个问题中得到了这个例子,有人能帮我理解吗?例如,我们何时使用访客设计模式?我想我可能已经理解了一些,但我只是无法看到更大的图景.我如何知道何时可以使用它?

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)

c++ visitor

25
推荐指数
2
解决办法
2万
查看次数

在RSpec中,在之前使用let变量:all block

我在大多数测试中都有以下代码:

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,签名用户,然后在另一个测试中使用它(我检查用户的公司属性)

ruby rspec ruby-on-rails rspec3

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