Yis*_*oel 3 mysql oop coldfusion
我正在构建一个对象来搜索我的数据库中的订单.用户可以设置许多可能的参数,并且可以设置每次搜索所需的数量.我已经创建了setter方法来收集搜索所需的所有参数.
我的问题是这个.什么是"最佳实践"
WHERE时构建子句doSearchWHERE子句设置为参数已设置我想了解任何建议背后的原因.
请注意,对象是针对每次搜索而设置的,因此我不必担心使用不同参数进行第二次搜索.
小智 13
您应该将订单搜索的代码与构建SQL的代码分开.SQL应该在类的派生(或策略派生)中构建OrderSearch.一旦完成了这种分离,构建SQL 时并不重要.
为了使这更加简单.给定一个名为OrderSearch具有搜索条件的一组setter方法的类,您希望有一个名为的子类OrderSearchSQLBuilder.请注意,子类依赖于基类,并且基类独立于子类.这是非常重要的.这种独立性允许您忽略SQL是在setter方法中还是在搜索方法中构建的.请参阅依赖性倒置原则(DIP).
一旦你有这种分离,你可以用其他策略替换衍生物.例如,如果您想在不将其连接到SQL数据库的情况下测试应用程序,则可以创建一个虚拟的in-ram数据库并创建OrderSearch处理该虚拟数据库的衍生产品.应用程序的其余部分将无法意识到,您的测试将独立于数据库连接,预先存在的数据等的恐怖.