小编Dav*_*uth的帖子

原型设计模式真的只是克隆吗?

我正在深入研究设计模式,我遇到了原型,我以前没有真正研究过.我搜索过网络和几本书,并没有一个非常好的原型示例可以找到不仅仅是克隆.原型的设计模式基本上是java和C#的语言特征吗?

language-agnostic design-patterns clone prototype-pattern

15
推荐指数
2
解决办法
4006
查看次数

您何时决定将访客用于您的对象?

我一直认为对象需要数据和消息来对其进行操作.你什么时候想要一个对象的外在方法?有一个经验法则,你有一个访客?这假设您可以完全控制对象图.

java design-patterns traversal visitor

15
推荐指数
2
解决办法
1377
查看次数

策略,访问者和模板方法之间的区别是什么?

我正在上课,我们刚刚了解了这些设计模式.但是我看不出它们之间有什么区别.它们听起来像是一样的,在抽象的类上创建具体的类.有人可以帮我解决这个疑问吗?谢谢 (:

design-patterns strategy-pattern visitor template-method-pattern

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

构建项目>如何在不同的文件夹中签出不同的存储库

我是TeamCity的新手.我将我的项目放在不同的存储库中.我想在不同的子文件夹中签出我的项目.例如

让我们假设我在三个不同的项目中有3个.net项目.

骨架

XYZ

我的项目

每个项目都存储在自己的存储库中.MyProject包含一个解决方案文件,期望Framwork和XYZ项目文件夹位于主文件夹中,以便文件夹结构看起来像

+ FrameWork的

 -ProjectFile
 -.........
Run Code Online (Sandbox Code Playgroud)

+ XYZ

 -ProjectFile
Run Code Online (Sandbox Code Playgroud)

+ MyProject的

 -SolutionFile(has references of both Projects.)
Run Code Online (Sandbox Code Playgroud)

现在我的问题是我想从自己的文件夹中的不同存储库中检出我的项目.如何在TeamCity中配置它.

谢谢

teamcity

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

实现访客模式,同时允许不同的返回类型的功能

我正在尝试为具有不同返回类型(string,signed int,unsigned int等)的方法的对象结构实现访问者模式.

现在,在对象层次结构中,我添加了一个带有以下签名的Accept方法(使用C++):

void Accept(Visitor *);
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何使用相同的接口(使用void返回类型),同时允许我的具体方法具有不同的返回类型.

c++ design-patterns visitor

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

了解使用单一责任原则的实际好处

我正在努力了解SRP,但是,虽然我理解了如何应用它的原因,但我并没有真正看到这样做的好处.考虑这个例子,取自Robert Martin的SRP PDF:

interface IModem
{
    void Dial(string number);
    void Hangup();
    void Send(char c);
    char Recv();
}
Run Code Online (Sandbox Code Playgroud)

他建议将其分为两个界面:

interface IModemConnection
{
    void Dial(string number);
    void Hangup();
}

interface IModemDataExchange
{
    void Send(char c);
    char Recv();
}
Run Code Online (Sandbox Code Playgroud)

我也一直在阅读这篇文章,它更进了一步:

interface IModemConnection : IDisposable
{
    IModemDataExchange Dial(string number);
}

interface IModemDataExchange
{
    void Send(char c);
    char Recv();
}
Run Code Online (Sandbox Code Playgroud)

在这一点上,我理解functional(Send / Recv)和non-functional(Dial / Hangup)方面的含义,但我没有看到在这个例子中分离它们的好处.考虑到这个基本实现:

class ConcreteModem : IModemConnection
{
    public IModemDataExchange Dial(string number)
    {
        if (connection …
Run Code Online (Sandbox Code Playgroud)

c# single-responsibility-principle solid-principles

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

带有async/await的ICommandHandler/IQueryHandler

EDITH说(tl; dr)

我选择了建议解决方案的变体; 保持所有ICommandHandlers和IQueryHandlers可能是异步的并在同步情况下返回已解析的任务.尽管如此,我不想在Task.FromResult(...)所有地方使用,所以我为方便起见定义了一个扩展方法:

public static class TaskExtensions
{
    public static Task<TResult> AsTaskResult<TResult>(this TResult result)
    {
        // Or TaskEx.FromResult if you're targeting .NET4.0 
        // with the Microsoft.BCL.Async package
        return Task.FromResult(result); 
    }
}

// Usage in code ...
using TaskExtensions;
class MySynchronousQueryHandler : IQueryHandler<MyQuery, bool>
{
    public Task<bool> Handle(MyQuery query)
    {
        return true.AsTaskResult();
    }
}

class MyAsynchronousQueryHandler : IQueryHandler<MyQuery, bool>
{
    public async Task<bool> Handle(MyQuery query)
    {
        return await this.callAWebserviceToReturnTheResult();
    }
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是C#不是Haskell ......还是8-).真的闻起来像 …

asp.net-mvc cqrs async-await c#-5.0 simple-injector

15
推荐指数
4
解决办法
4886
查看次数

不恰当的亲密关系和特征嫉妒之间有什么区别?

两种气味都在福勒的书"重构"中有所描述.

我知道这些气味的含义是:

  • Feature Envy是一个对象中的一个方法在另一个对象上调用了六个获取方法.
  • 不恰当的亲密关系是两个班级经常依赖于彼此的私人部分.

看起来两种气味都表明一个对象的一部分太多依赖于另一个对象.

有人可以解释这两种气味之间的主要区别吗?

language-agnostic refactoring

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

在OS X Mavericks上使用ruby 2.0.0在RubyMine中调试时降低LoadError

升级到OS X Mavericks(10.9.2)后,我的RubyMine无法再调试.它出乎意料地退出并出现以下错误:

测试于下午1:37开始... /Users/vinny.ly/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/gems/2.0.0/gems/ruby-debug-ide-0.4. 23.beta1/lib/ruby​​-debug-ide.rb:8:在`require':无法加载这样的文件 - debase(LoadError)

我有以下Ruby和宝石

$ ruby -v
ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-darwin13.1.0]

$ gem list debugger
debugger-ruby_core_source (1.3.4)

$ gem list ruby-debug-ide
ruby-debug-ide (0.4.23.beta1, 0.4.22)

$ gem list debase
debase (0.0.9)
Run Code Online (Sandbox Code Playgroud)

我正在运行RubyMine 6.3.我已经尝试恢复到以前的版本6.0.3和5.4.3但我得到相同的错误.

我也尝试卸载并重新安装宝石,这没有帮助.

ide debugging macos rubymine osx-mavericks

15
推荐指数
2
解决办法
4005
查看次数

RSpec找不到嵌套格式化程序

我试图rspec只为Ruby(而不是Rails)运行一个简单的Ruby文件.我正在使用Ruby进行Tut + TDD测试.

我有一个competition包含lib文件夹和spec文件夹的目录.

??? lib  
?   ??? competition.rb  
?   ??? team.rb  
??? spec  
    ??? competition_spec.rb  
Run Code Online (Sandbox Code Playgroud)

当我跑步时rspec,我收到了这个错误.我之前可以发誓rspec的工作.我不知道发生了什么.

competition :> rspec spec
/Users/akh88/.rvm/gems/ruby-1.9.3-p547/gems/rspec-core-> 3.0.2/lib/rspec/core/formatters.rb:167:in `find_formatter': Formatter 'nested' unknown - maybe you meant 'documentation' or 'progress'?. (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

我的 competition_spec.rb

require_relative "../lib/competiiton.rb"  
require_relative "../lib/team.rb"  

describe Competition do
  let(:competition) {Competition.new}
  let(:team) {Team.new}

  context "having no questions" do
    before { competition.questions = [] }

    it "doesn't accept any teams" do
      expect do
        team.enter_competition(competition)
      end.to raise_error …
Run Code Online (Sandbox Code Playgroud)

ruby testing tdd rspec

15
推荐指数
2
解决办法
3507
查看次数