让我们假设我们有一个课程,偶尔会添加新的检查,并以下面的描述结束:
class CheckList{
check1(){
//do something
}
check1(){
//do something
}
//...
checkN(){
//do something
}
}
并且您希望以简单的方式调用所有检查
我考虑过以下几种选择:
我想要避免的是每次需要修改其他类 添加了新的支票。
是否有一种设计模式/配方可以实现这样的效果?
注意: 订单根本不重要
编辑:谢谢你所有有价值的答案,我在创建多个文件时没有问题,我知道我可以创建一个调用其余方法的列表/方法
class Caller{
executeAll(){
check1();
check2();
checkN();
}
//list add checkN
//foreach check in list execute it
}
但我们的想法是让它尽可能自动化,以便在添加新支票时,所做的更改很少,而且添加新支票的人不必担心将他/她的新支票添加到检查列表(这会使其不易出错)
如果没有办法避免这样,我想我可以忍受它我只是在寻找一些替代方案
答案 0 :(得分:2)
我不知道您的确切业务需求,但似乎您需要类似“拦截过滤器模式”的内容
根据上面的图片,您已经拥有的类(CheckList)将被拆分为FilterManager和FilterChain(只是FilterChain也可能就足够了。在您的情况下 - 例如CheckChain)。
check1(),checkN)等方法会被提取到一个接口(在图片上过滤,大概检查你的情况)
您可以将具体的checkN()方法实现为实现此接口的类或lambdas。如果是后者,您可能需要检查(here is a list)是否存在满足您需求的现有功能接口(可能存在)
至少这样的事情。希望有所帮助:)Intercepting Filter Pattern explained and picture source at the same time
答案 1 :(得分:0)
如何将其作为单元测试编写?每个检查只是同一测试类中的另一个单元测试,并且通过运行整个测试类作为单元测试,除了添加新的检查(测试)之外,您不必执行任何操作