Tag: 代码设计

泽西岛的身份validation

我想为我的基于Jersey0的服务器/客户端REST实现身份validation,但我不确定如何布置代码。 基本上对于每个操作我有2个方法 – 从服务器端1个,从客户端1个。 我缩小了算法范围 – 我将使用亚马逊策略和HMAC。 问题是如何在代码中列出这个 – 我应该将身份validation(加密/解密代码)添加到每个方法 – 服务器/客户端还是我应该在两端都有一个“dispatch”方法来执行加密/解密,然后将执行控制转移到一个更专业的版本,这将我有一个中心位置,在客户端或服务器进行身份validation? 我愿意听听你对此的评论吗?

两个参数的访客模式

这是一个问题陈述:我们有接口/超级class学生和教师 学生有两个实施/子课程,ScienceStudent和PhysicalEducationStudent 老师有ScienceTeacher和PhysicalEducationTeacher。 我们想要实现一个方法getMeetingPoint(学生,教师t),它根据学生和教师的类型返回他们见面的地方。 例如,如果他们是实验室会见的ScienceStudent和ScienceTeacher ,如果PEStudent和PETeacher他们在地面见面,如果是ScienceStudent和PETeacher ,反之亦然,他们在自助餐厅见面 我们可以编写一个天真的方法,使用instanceof进行检查。 但问题是,当教师或学生扩展并且难以维护时,这变得复杂。 像这样的东西: public class MeetingPointDecider { getMeetingPoint(Student s,Teacher t) { if(s instanceof ScienceStudent && t instanceof ScienceTeacher) { return “Lab”; } else if (s instanceof PhysicalEducationStudent && t instanceof PhysicalEducationTeacher) { return “GRound”; } . . . } } 另一个选择是写一个工厂,它接受一个学生和一个教师,并返回类似MeetingPointDecision [Ground或Lab],但问题仍然存在。 我们可以使用任何好的模式,在添加新类时我们不必修改现有的类(或最小的修改),Say instanceof ScienceStudent我们有ChemistryStudent,PhysicsStudent和ChemistryLab,PhysicsLab。 还有可能添加更多操作,这些操作根据学生和教师类型的不同而有所不同(其中访问者是一个选项,但不确定如何使用两个决策类实现) 有人可以建议一个实现这个的好方法吗? 谢谢!

如何在Java中将可执行块作为参数传递?

有没有办法将可执行块作为参数传递给静态方法? 有可能吗? 例如,我有这种方法 public static void someMethod(boolean flag, Block block1, BLock block2) { //some other code if(flag) block1.execute(); else block2.execute(); //some other code } 或类似的东西。 它实际上比这更复杂,我只是简化了问题。 我试图重构我的项目,我创建了一个通用实用程序类,其中包含我的类使用的静态方法。