Don't jump directly to implementation constructs such as friend relationships and parameterized classes. These are more relevant to the solution space than to the problem space, though, and the focus of domain modeling should definitely be the problem space. If you're reengineering a legacy system that uses a relational database, the tables within that database are likely to be an excellent source of domain classes. However, be careful not to just bring them over to your static model wholesale. Relational tables can have lots of attributes that might not belong together in the context of an object model.
Patterns often become visible during robustness analysis.
Looking ahead to interaction modeling, design patterns can be highly useful in the context of sequence diagrams and design-level class diagrams. However, domain modeling is not the time to start thinking in terms of patterns. This class diagram violates the third, fifth, sixth, eighth and ninth rule from our top 10 list of domain modeling mistakes. Figure 2 shows a class diagram that violates five of the top 10 rules. This violates rule number three.