| 
                         | 
                    
                              1 
                        
                        
                                  2
                             
                            您是否打算以任何多态的方式将SalesReports和ProfitReports视为报表?
 销售报告和利润报告之间有多少共同的逻辑吗?
 跳到“何时使用继承和何时使用组合?”第一部分。这是一篇基于Java的文章,但是这些概念对于静态OO语言来说是非常通用的。  | 
                
                         
                     | 
                    
                              2 
                        
                        
                                  1
                             
                            您应该创建一个接口: 
  然后像这样编码: 
  
 
 
 | 
                
| 
                         | 
                    
                              3 
                        
                        
                                  0
                             
                            
   作为
    
  | 
                
                         
                     | 
                    
                              4 
                        
                        
                                  0
                             
                            方法2会更好,因为您可以重用与所有报表(打印、重新评估等)相似的代码。而且不需要里面的“SalesType”,因为您已经在子类化。。。 这也被称为 template pattern “在设计模式术语中。  | 
                
| 
                         | 
                    
                              5 
                        
                        
                                  0
                             
                            如果说您的销售报告将拥有与报表相同的所有属性,那么从这样的基类派生它们是最好的方法。然而,如果从一种类型的报告到另一种类型的报告会有极端的差异,那么我会走另一条路。 基本上,我在report类中看到的是名称和地址之类的东西。然后,报表的实际统计信息或数据将存储在SalesReport类中。这取决于你需要什么。重要的是要考虑等级制度。哪些数据对所有报表都很重要?什么数据是特定于某种类型的报告的?回答这些问题,你就会得到答案。  | 
                
| 
                         | 
                    
                              6 
                        
                        
                                  0
                             
                            
 如果这两个报告非常相似,那么大部分代码都应该在基类报告中结束,派生类型提供特定的实现细节。  | 
                
| 
                         | 
                    
                              7 
                        
                        
                                  0
                             
                            
   什么是
    
  但是,如果使用方法2(在这种情况下,这通常是最佳选择),您实际上不需要属性来标识报告类型,因为您可以为此目的使用类型标识。 换句话说,不要这样做: 
  相反,可以这样做: 
  更好的是,使用多态性: 
 
 | 
                
| 
                         | 
                    A B · C#Excel自动调整列避免长文本时出错 8 月前 | 
| 
                         | 
                    Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 8 月前 | 
                         
                     | 
                    Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 8 月前 | 
| 
                         | 
                    Sei · Avalonia/WPF将路由器传递到控制模板 9 月前 |