情况就是这样.我们有两台来自不同供应商(制造商)的打印机.我们希望顶级代码不会意识到有关提供程序的详细信息,只需使用统一的API.所以我开始提取界面.
public interface IPrinterProvider {
bool Connect(string comPort);
bool IsConnected();
}
Run Code Online (Sandbox Code Playgroud)
好.现在,我意识到一台打印机需要Password属性,但另一台则不需要.所以我该怎么做?
再一次.据我所知,我将有一个或几个接口和几个实现者.但是呼叫者将如何工作?我应该创建一个单独的类,它可能不实现任何接口?例如:
public class CommonPrinterProvider {
private IPrinterProvider printerProvider;
public CommonPrinterProvider(IPrinterProvider printerProvider) {
this.printerProvider= printerProvider;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,总共有两个问题.
当我运行以下语句时:
SELECT CAST ('12/08/1988' AS DATE) AS BIRTHDAY
Run Code Online (Sandbox Code Playgroud)
我得到的是 1988-12-08,而不是 ISO 8601 格式的 1988-08-12。SQL Server 如何决定申请解析的格式?我知道最佳实践,我只是对它在哪里以及如何更改感兴趣?
假设我有一堂课:
class Character():
def __init__(self):
self.race = "Ork"
Run Code Online (Sandbox Code Playgroud)
我创建了一个实例并对其进行了腌制。
c = Character()
import pickle
with open(r'C:\tmp\state.bin', 'w+b') as f:
pickle.dump(c, f)
Run Code Online (Sandbox Code Playgroud)
当我尝试解开它时,一切正常。但是如果我想为 Character 添加另一个属性怎么办?我去这个:
class Character():
def __init__(self):
self.race = "Ork"
self.health = 100
Run Code Online (Sandbox Code Playgroud)
假设我想取消我们没有health属性的旧版本。如果我只是从文件中解压数据,则对象将不具有该health属性。为了以正确的方式实现它,按照“Effective Python”一书中的内容,我需要引入具有默认值的参数并将其copyreg发挥作用。
所以,我这样做:
class Character
def __init__(self, race = "Ork", health = 100):
self.race = race
self.health = health
import copyreg
def pickle_character(state):
kwargs = state.__dict__
return unpickle_character, (kwargs, )
def unpickle_character(kwargs):
return Character(**kwargs)
copyreg.pickle(Character, pickle_character)
Run Code Online (Sandbox Code Playgroud)
现在 unpickling 应该可以正常工作:
with …Run Code Online (Sandbox Code Playgroud) 不建议从验证回调中返回true.这是一个不好的做法.由于我不知道cerfificate验证的最佳实践,我想依赖于默认实现,但我完全不明白如果客户端尝试连接到"https:/"应该指定服务器证书的名称/192.168.0.64/Company/ServiceReference.svc/MainService"?
我想在代码中从一个地方部署一个文件,我不想用相同参数的相同属性来装饰很多测试.
我用mstest.
c# ×2
.net ×1
architecture ×1
deployment ×1
mstest ×1
pickle ×1
python ×1
security ×1
sql ×1
sql-server ×1
ssl ×1
t-sql ×1
unit-testing ×1
wcf ×1