title: Low Level Design, Implementing pool of checks and choosing checks from this pool to create a strategy
body: <p><strong>Problem Context</strong></p>
  <p>Suppose within a bank's risk department, we have a strategy (call it 'A') to calculate the risk a customer. This calculation is done by amalgamation of a number of checks i.e if the customer is married/unmarried, Salaried/Non-salaried etc.</p>
  <p>These can be simple and complex checks which overall give us the risk of the customer, so each of these checks are implemented as a class where each class(check) gives its decision.</p>
  <p>We also develop another Strategy (call it 'B') to run parallel for A/B testing. i.e let's say 20% of customers go through this strategy rather than 'A' for risk calculation. This strategy has a lot of similar checks but a couple of new checks as well.</p>
  <p>so the overall scenario would look something like below.</p>
  <p><a href="https://i.stack.imgur.com/aq42t.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/aq42t.png" alt="enter image description here" /></a></p>
  <p>The list of checks for each strategy will be fetched from database, so that we can have multiple strategies as well as have a store of all the strategies for risk-calculation.We can generate Strategy A or Strategy B at runtime by injecting checks.
  Checks making up strategy A and B can be completely different, somewhat different or very little different
  <a href="https://i.stack.imgur.com/5xWR6.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/5xWR6.png" alt="enter image description here" /></a></p>
  <p><strong>Problem</strong>
  I am not able to get to a low-level design or how can I implement it. Class structure, or how to inject these checks dynamically into a strategy class after reading the list of checks for the database.</p>
  <p>any help or hints or links would be very much appreciated</p>
  <p>While a Strategy pattern could be suggested here, but I don't think it will work if Strategy A and Strategy B have no checks in common</p>