在上一个问题中,Herbie博士对已接受答案的评论之一是我的方法执行了两项职责......即更改数据和保存数据.
我想弄清楚的是在我的情况下分离这些问题的最佳方法.
继续我的示例有一个通过NHibernate检索的Policy对象....
我目前将策略设置为非活动状态的方式如下:
Policy policy = new Policy();
policy.Status = Active;
policyManager.Inactivate(policy);
//method in PolicyManager which has data access and update responsibility
public void Inactivate(Policy policy)
{
policy.Status = Inactive;
Update(policy);
}
Run Code Online (Sandbox Code Playgroud)
如果我将数据访问和数据更新的责任分开,那么最好的方法是什么呢?
最好让PolicyManager(充当dao的网关)管理Policy对象的状态:
Policy policy = new Policy();
policy.Status = Active;
policyManager.Inactivate(policy);
policyManager.Update(policy);
//method in PolicyManager
public void Inactivate(Policy policy)
{
policy.Status = Inactive;
}
Run Code Online (Sandbox Code Playgroud)
或者让Policy对象维护它自己的状态,然后使用manager类将信息保存到数据库:
Policy policy = new Policy();
policy.Status = Active;
policy.Inactivate();
policyManager.Update(policy);
//method in Policy
public void Inactivate()
{
this.Status …
Run Code Online (Sandbox Code Playgroud) 我已经看过关于这个主题的几个问题,但我还没有找到明确的答案.
我想知道在新的Python代码库中使用旧式类的正确方法.比方说,例如,我有两个固定类,一个和乙.如果我想要子类A和B,并转换为新式类(A2和B2),这是有效的.但是,如果我想从A2和B2创建新的C类,则会出现问题.
因此,是否可以继续使用此方法,或者如果任何基类被定义为旧式,那么所有类都必须符合旧式吗?
请参阅示例代码以获得说明:
class A:
def __init__(self):
print 'class A'
class B:
def __init__(self):
print 'class B'
class A2(A,object):
def __init__(self):
super(A2, self).__init__()
print 'class A2'
class B2(B,object):
def __init__(self):
super(B2, self).__init__()
print 'class B2'
class C(A2, B2):
def __init__(self):
super(C,self).__init__()
print 'class C'
A2()
print '---'
B2()
print '---'
C()
Run Code Online (Sandbox Code Playgroud)
这段代码的输出:
class A
class A2
---
class B
class B2 …
Run Code Online (Sandbox Code Playgroud) 注意:我完全重写了这个问题,以更恰当地反映出我为此设置的赏金.请原谅与已经给出的答案有任何不一致之处.我不想创建一个新问题,因为之前的答案可能会有所帮助.
我正在努力实现一个C标准库,并对标准的一个特定角落感到困惑.
该标准定义了由接受数字格式scanf
函数族(%d,%I,%U,%O,%X)在用于定义而言strtol
,strtoul
,和strtod
.
该标准还规定,fscanf()
只会将最多一个字符放回输入流中,因此一些序列可以接受strtol
,strtoul
并且strtod
是不可接受的fscanf
(ISO/IEC 9899:1999,脚注251).
我试图找到一些会表现出这种差异的价值观.事实证明,十六进制前缀"0x",后跟不是十六进制数字的字符,就是两个函数系列不同的情况.
有趣的是,很明显没有两个可用的C库似乎在输出上达成一致.(请参阅本问题末尾的测试程序和示例输出.)
我想听到的是解析"0xz"时会被视为符合标准的行为?.理想情况下引用标准中的相关部分来说明问题.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main()
{
int i, count, rc;
unsigned u;
char * endptr = NULL;
char culprit[] = "0xz";
/* File I/O to assert fscanf == sscanf */
FILE * fh = fopen( "testfile", "w+" );
fprintf( fh, "%s", culprit );
rewind( fh );
/* fscanf …
Run Code Online (Sandbox Code Playgroud) 如何使用 c# 使用sharpsvn 客户端读取文件的每个修订版?不是版本号,而是每个版本中文件的内容......
对于处理散文的文本,以纯文本形式存储,我非常喜欢输出git diff --color-words
,但我不喜欢它依赖于ANSI终端转义序列的方式.我想获得可用于转换为HTML的输出,某种用户友好的原始字符显示,或生成两个文件之间差异的统计信息.
我更喜欢Perl(包括CPAN),但几乎可以解决任何问题.
例如,从html中删除键/值对,如下所示:
<tr>
<td id="td3" class="td3" bgcolor="#FFFFFF" colspan="4">? Related Information </td>
</tr>
<tr>
<td id="td5" class="td5" width="10%">job title?</td>
<td id="td5" class="td5" width="90%" colspan="3">Sales Representitive</td>
</tr>
<tr>
<td id="td5" class="td5" width="10%">Date?</td>
<td id="td5" class="td5" width="40%">2009-9-15</td>
</tr>
<tr>
<td id="td5" class="td5" width="10%">Location?</td>
<td id="td5" class="td5" width="40%">Jiangyin</td>
</tr>
<tr>
<td id="td5" class="td5" width="10%">Degree:</td>
<td id="td5" class="td5" width="40%">Bachelor</td>
<td id="td5" class="td5" width="10%">Major?</td>
<td id="td5" class="td5" width="40%">No limit</td>
</tr>
<tr>
<td id="td5" class="td5" width="10%">Sex?</td>
<td id="td5" class="td5" width="40%">No limit</
</tr>
<tr>
<td id="td5" class="td5" width="10%">Type?</td>
<td …
Run Code Online (Sandbox Code Playgroud) 所以,我刚刚开始阅读这篇文章,我以前从未在PHP中实现过搜索.我有几个问题,我想知道:
谢谢.
我在一个字符串中有两个段落.但是内容在段落字符串之间有很多空格.我想从这个大段落字符串中删除空格.我尝试使用NSString*outPutStr = [outPutStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 但它不会删除段落字符串中的空格.它什么都不做.
有人可以指导我样品吗?
谢谢.
来福/