我正在深入研究设计模式,我遇到了原型,我以前没有真正研究过.我搜索过网络和几本书,并没有一个非常好的原型示例可以找到不仅仅是克隆.原型的设计模式基本上是java和C#的语言特征吗?
我一直认为对象需要数据和消息来对其进行操作.你什么时候想要一个对象的外在方法?有一个经验法则,你有一个访客?这假设您可以完全控制对象图.
我正在上课,我们刚刚了解了这些设计模式.但是我看不出它们之间有什么区别.它们听起来像是一样的,在抽象的类上创建具体的类.有人可以帮我解决这个疑问吗?谢谢 (:
design-patterns strategy-pattern visitor template-method-pattern
我是TeamCity的新手.我将我的项目放在不同的存储库中.我想在不同的子文件夹中签出我的项目.例如
让我们假设我在三个不同的项目中有3个.net项目.
骨架
XYZ
我的项目
每个项目都存储在自己的存储库中.MyProject包含一个解决方案文件,期望Framwork和XYZ项目文件夹位于主文件夹中,以便文件夹结构看起来像
+ FrameWork的
Run Code Online (Sandbox Code Playgroud)-ProjectFile -.........+ XYZ
Run Code Online (Sandbox Code Playgroud)-ProjectFile+ MyProject的
Run Code Online (Sandbox Code Playgroud)-SolutionFile(has references of both Projects.)
现在我的问题是我想从自己的文件夹中的不同存储库中检出我的项目.如何在TeamCity中配置它.
谢谢
我正在尝试为具有不同返回类型(string,signed int,unsigned int等)的方法的对象结构实现访问者模式.
现在,在对象层次结构中,我添加了一个带有以下签名的Accept方法(使用C++):
void Accept(Visitor *);
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何使用相同的接口(使用void返回类型),同时允许我的具体方法具有不同的返回类型.
我正在努力了解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) 我选择了建议解决方案的变体; 保持所有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-).真的闻起来像 …
两种气味都在福勒的书"重构"中有所描述.
我知道这些气味的含义是:
看起来两种气味都表明一个对象的一部分太多依赖于另一个对象.
有人可以解释这两种气味之间的主要区别吗?
升级到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但我得到相同的错误.
我也尝试卸载并重新安装宝石,这没有帮助.
我试图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.rbrequire_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)