|
|
1
5
一个简单的解决方案是不使用您所称的单例。每次需要加密时,只需创建加密实现的新实例。如果这样做,就可以在加密实例上存储所需的所有状态。这些实例只能使用一次;您可以防止它们在代码中被重用。 或者,因为需要存储状态,所以可以创建一个EncryptionContext类,将其实例传递给encrypt方法。所有必要的状态都可以存储在这些上下文实例中,并且您可以对上下文进行错误检查,以确保在任何给定步骤中继续操作所需的所有信息都存在。如果您这样做,您可以重用加密实现实例。不过,您必须更改接口。。 Strategy Pattern ,这很好。
如果一个实现需要状态,那么它们也可能都需要状态。除非您想使用第三个选项,即为有状态加密算法创建单独的接口。但是,这并不吸引人,因为这是一个实现细节,不需要反映在接口中,接口的目的是表示 而不是 . 我还是会选择上面两个选项中的一个,要么是ok,要么是OO,IMHO。 |