对象容器的问题
在面向对象系统中,我们常会遇到一类具有"容器"特征的对象---即它们在充当对象的同时,又是其他对象的容器。

 

    public interface IBox { }
    
public class SingleBox : IBox
    {
        
public void Pocess() { }
    }
    
public class ContainerBox : IBox
    {
        
public void Process() { }
        
public ArrayList GetBoxes() { }
    }


    
class App
    {
        
public static void Main(string[] args)
        {
            IBox box 
= Factory.GetBox();

            
//客户代码与对象内部结构发生了耦合
            
//也就是说客户代码得判断对象的类型,而松耦合的状态意昂该是
            
//客户代码接口只与IBox有关
            if (box is ContainerBox)
            {
                box.Process();
                ArrayList list 
= ((ContainerBox)box).GetBoxes();
                
//....面临更复杂的递归处理;
            }
            
else if (box is SingleBox)
            {
                box.Process();
            }
        }
内部实现结构和外部客户代码有依赖

相关文章: