zoukankan      html  css  js  c++  java
  • 090923 T 一个对象一对多关联的问题

    编程时遇到对象关联API的设计问题,感觉可能这种api的设计方案本身就有问题,所以目前还未有解决方案。
    问题如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication
    {
        /// <summary>
        /// 在NotImplement的方法/属性中填入相应内容,以保证程序不会抛出异常。
        /// (就是:Parent属性,AddChild方法,RemoveChild方法。)
        ///
        /// 不能修改其它代码。
        /// </summary>
        class Program
        {
            static void Main(string[] args)
            {
                Parent parentA = new Parent();
                Parent parentB = new Parent();
                Child child = new Child();

                parentA.AddChild(child);

                child.Parent = parentB;
                Assert(parentA.Children.Count == 0, parentB.Children.Count == 1, child.Parent == parentB);

                parentA.AddChild(child);
                Assert(parentB.Children.Count == 0, parentA.Children.Count == 1, child.Parent == parentA);

                child.Parent = null;
                Assert(parentB.Children.Count == 0, parentA.Children.Count == 0, child.Parent == null);
            }

            static void Assert(params bool[] values)
            {
                foreach (var value in values)
                {
                    if (value == false)
                    {
                        throw new Exception();
                    }
                }
            }
        }
        class Parent
        {
            private List<Child> _children;

            public Parent()
            {
                this._children = new List<Child>();
            }

            public IList<Child> Children
            {
                get
                {
                    return new System.Collections.ObjectModel.ReadOnlyCollection<Child>(this._children);
                }
            }
            public void AddChild(Child child)
            {
                throw new NotImplementedException();
            }
            public void RemoveChild(Child child)
            {
                throw new NotImplementedException();
            }

        }
        class Child
        {
            private Parent _parent;

            public Parent Parent
            {
                get
                {
                    throw new NotImplementedException();
                }
                set
                {
                    throw new NotImplementedException();
                }
            }
        }
    }

  • 相关阅读:
    分布式锁的几种实现方式
    分布式锁简单入门以及三种实现方式介绍
    Redis 总结精讲
    Redis 总结精讲 看一篇成高手系统-4
    Request、Response 之 Http 请求
    定时任务 Cron表达式
    跑批利器--批处理应用程序
    使用MultiByteToWideChar转换UTF8为GBK(UTF8在Windows的代码页是CP_UTF8)
    了解 XML 数字签名
    QuickReport根据每行的内容长度动态调整DetailBand1的行高
  • 原文地址:https://www.cnblogs.com/zgynhqf/p/1607719.html
Copyright © 2011-2022 走看看