设计模式与数据序列化实战
1. 密码生成
可以使用以下代码生成密码:
int main() { composite_password_generator generator; generator.add(std::make_unique<symbol_generator>(2)); generator.add(std::make_unique<digit_generator>(2)); generator.add(std::make_unique<upper_letter_generator>(2)); generator.add(std::make_unique<lower_letter_generator>(4)); auto password = generator.generate(); }可以使用之前编写的密码验证器来确保生成的密码符合预期要求。
2. 社会安全号码生成
两个国家的社会安全号码格式非常相似,但有几个细节不同:
- 性别数字的值
- 随机部分的长度,以及整个号码的长度
- 校验和必须是其倍数的数字
这个问题可以使用模板方法设计模式来解决,该模式定义了算法的骨架,并允许子类重新定义特定步骤。
以下是相关代码实现:
enum class sex_type {female, male}; class social_nu