这种情况如何解耦?,比如类A有一个变量数组,里面是C类的实现,但C类有一个变量是A类的实例。

问题描述

这种情况如何解耦?,比如类A有一个变量数组,里面是C类的实现,但C类有一个变量是A类的实例。举例。ClassA{C[]children=...........publicvoidLoadC(){children[index]=newC(this);}}classC{C(Aparent){this.parent=parent;}}

大概就是这个样子的。请问这样做是不是很不好?有何办法解决?标题有错字,实例不是现实,csdn这么多年了还是不能编辑标题与内容,真是操蛋。

解决方案

本帖最后由 feethink 于 2016-04-15 13:00:45 编辑
解决方案二:
请举个具体点的例子
解决方案三:
引用1楼shingoscar的回复:

请举个具体点的例子

上面那样的不算具体?比如,我想实现模块功能,须要在入口的类中加载所有模块。但在每一个模中,我须要用到那个入口类中的某个变量或函数,就有了上边的代码。我在网上查了一下,那用这种方式,我想问下有没有一种办法,能实现这种功能,而不须要相互包含对方。
解决方案四:
那也应该是传入这个变量或者委托更复杂点的传入一个初始化对象但没有必要传入入口类本身
解决方案五:
可以采用接口,依赖与接口而不是依赖具体类,然后使用依赖注入将具体实体进行注入。依赖注入你可以百度下相关文章

时间: 2024-07-30 11:07:00

这种情况如何解耦?,比如类A有一个变量数组,里面是C类的实现,但C类有一个变量是A类的实例。的相关文章

用类来实现二维数组

提示:您可以先修改部分代码再运行 <script language="JavaScript"> <!-- //今天突然想用关联数组来实现一个功能,所以研究了下,感觉蛮有意思的,发上来给大家分享下,呵呵. //定义二维数组A function A(){}; //定义A中的行b和c两行 A.b = function (){}; A.c = function (){}; //为每行添加列数据,这个示例只是一列 A.b.z = '1111'; A.c.z = '2222';

新手写的一个队数组操作的工具类,提供给大家

问题描述 新手写的一个队数组操作的工具类,提供给大家@param本程序为一个单独的工具类,内部没有入口函数,只需要在主函数中调用本类即可@param调用方法1.如果你用的是记事本类的编写工具,只需要将class文件放到你的代码下,设置classpath2.如果你是用的eclipse专用编写工具你需要先将class文件打包:打包命令为jar-cvfarrtool.jar*.*然后添加外置包即可.1.这个是jar文件2.这个是class文件http://download.csdn.net/detai

Arrays类应用&amp;#183;使用Arrays类操作Java中的数组

使用 Arrays 类操作 Java 中的数组 Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴~~). Arrays 中常用的方法: 1. 排序 语法:  Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该数组的排序(按升序排列),如: 运行结果: 

Android 数据存储之 FileInputStream 工具类及FileInputStream类的使用_Android

安卓的三种本地的典型数据存储方式 SharedPreferences 以文件格式保存在本地存储中 SQL数据库 这篇文章就是讲解一下如何使用 SharedPreferences 保存文件.主要解释什么都写在注释里面的. IDE : Android Studio 参考文章:http://www.jb51.net/article/74215.htm 絮叨一下:本来文件操作这一块上周就想把其弄懂,然后继续进一步的学习.但是因为官方的 Android Training 之中的概念太过于繁杂.导致我认为存

android应用资源预编译,编译和打包全解析

我们知道,在一个APK文件中,除了有代码文件之外,还有很多资源文件.这些资源文件是通过Android资源打包工具aapt(Android Asset Package Tool)打包到APK文件里面的.在打包之前,大部分文本格式的XML资源文件还会被编译成二进制格式的XML资源文件.在本文中,我们就详细分析XML资源文件的编译和打包过程,为后面深入了解Android系统的资源管理框架打下坚实的基础.         在前面Android资源管理框架(Asset Manager)简要介绍和学习计划一

一次编写,随处运行

关于 PHP 的数据库 API 对于不同的数据库有不同的函数,一直以来就有人尝试使用 PHP 的面向对象的功能进行一些封装.其中有比较著名的ADODB,PHPLIB.后来举世瞩目的 PEAR 项目中的 PEAR DB 更是其中的佼佼者.这些用面向对象对数据库 API 进行的封装的包一般称为数据库抽象层. 本文介绍的是 PEAR 中对 PEAR DB 进行融合 Metabase 库的一些优秀功能之后产生的注重效率,而且简单易用,功能非常强大的 MDB 的一个非常好的介绍.作者就是 MDB 的主创人

PEAR MDB 数据库抽象层 —— 一次编写—随处运行

数据|数据库 Write once - run anywhere一次编写--随处运行 这是Java的一句行销口号,但是它同时也是PHP的关键特性之一.许多商业模型依赖于操作系统无关性来保证产品能够销售给广泛的客户群体.因而,为什么要把你自己绑在某种数据库厂商的身上呢?数据库抽象层使得你能够与数据库独立的开发你的应用程序.但是,通常情况下它们对性能的影响超过了你所希望的,要么他们并不足够抽象以消除所有和特定数据库相关的代码. 这篇文章将教给我什么? 这篇文章将对数据库抽象包 PEAR MDB 有一

java的数组初始化

在C中初始化数组极易出错,而且相当麻烦.C++通过"集合初始化"使其更安全(注释⑥).Java则没有象C++那样的"集合"概念,因为Java中的所有东西都是对象.但它确实有自己的数组,通过数组初始化来提供支持. 数组代表一系列对象或者基本数据类型,所有相同的类型都封装到一起--采用一个统一的标识符名称.数组的定义和使用是通过方括号索引运算符进行的([]).为定义一个数组,只需在类型名后简单地跟随一对空方括号即可: int[] al; 也可以将方括号置于标识符后面,获

ExtJS 4.2 教程-07:Ext.Direct

转载自起飞网,原文地址:http://www.qeefee.com/extjs-course-7-Ext-Direct ExtJS 4.2 教程-01:Hello ExtJS ExtJS 4.2 教程-02:bootstrap.js 工作方式 ExtJS 4.2 教程-03:使用Ext.define自定义类 ExtJS 4.2 教程-04:数据模型 ExtJS 4.2 教程-05:客户端代理(proxy) ExtJS 4.2 教程-06:服务器代理(proxy) ExtJS 4.2 教程-07: