abstraction相关内容
我想让我的项目更加模块化,以便在删除一个模块时没有模块间的依赖关系. 例如如果我将进程中的代码分成多个目录,例如 X、Y 和 Z,以便 X 中的数据结构不应该被 Y 和 Z 中的数据结构直接访问,反之亦然,那么我需要一些 X 之间的内部通信机制,Y 和 Z. 因为我是用 C 语言编码的,谁能建议一个示例项目或相同的设计注意事项? 解决方案 这通常归结为 API 设计.我认为有帮
..
最近我偶然发现了一个以前运行良好的库中的错误,如果我能弄清楚它在哪里,我会被诅咒的. 代码示例如下,对于其中的调试内容,我深表歉意,但我正在努力使其正常工作. 问题是 $temp 是一个具有正确键(列名)的数组,但所有值都是 NULL. 我认为问题出在 call_user_func_array(array($query, 'bind_result'), $params); 有
..
什么时候应该抛出自定义异常? 例如我有一些连接到服务器的代码.连接到服务器的代码在连接失败时抛出 IOException.在它被调用的方法的上下文中,这很好.在网络代码中也很好. 但由于这表示没有连接(因此无法正常工作),因此异常一直持续到 ui.在这个阶段,IOException 是非常模糊的.像 NoConnectionException 这样的东西会更好. 所以,我的问题是
..
如何设计涉及其他类集合的类? 一般示例: 一个工作区包含多个项目. 项目包含大量资源. 每个资源可能包含大量文件. 所以这里识别的类可以是工作区、项目、资源和文件.工作区将包含项目列表.项目将包含资源列表,资源将包含文件列表.当然每个班级都有其相关的设置. 现在基本问题是: a) 谁创建类并将其添加到特定集合中?另一个类还是包含集合的类? b) 还有如何跟踪特定集合
..
可能的重复: 抽象 VS 信息隐藏 VS 封装 有人可以向我解释面向对象编程中封装和抽象原则之间的主要区别吗(如果可能的话). 解决方案 示例: //没有抽象,没有封装const int catLegs = 4;const int SpiderLegs = 8;Leg[] 猫腿;Leg[] 蜘蛛腿;void MakeCatRun(Distance b) { for (int i=
..
我正在 Android 应用程序中尝试 Realm.io,但为了安全起见,我想抽象 DB 层,以便在需要时可以切换回基于标准的 SQLiteDB 无需重写大部分应用程序. 然而,由于 Realm 的特殊性质,我发现它很难正确抽象: 当绑定到一个领域时,RealmObjects 是代理,所以我不能像 POJO 那样传递它们. 所有 Realm 实例都需要为使用它们的每个线程正确打开和关
..
我正在尝试将 DataBinding 添加到我的应用程序中.在我的应用程序中,我有一个 BaseActivity,它有一个工具栏和一个 FrameLayout.FrameLayout 是扩展 BaseActivity 的活动的容器.如何将数据绑定添加到我的 BaseActivity 和扩展活动? 我将在没有数据绑定的情况下分享我的代码: 这是我的 BaseActivity.java:
..
我当前的应用程序允许用户通过一组管理屏幕定义自定义 Web 表单.它本质上是一个 EAV 类型的应用程序.因此,我无法对 HTML 或 ASP.NET 标记进行硬编码以呈现给定页面.取而代之的是,UI 从服务层请求一个 Form 对象的实例,服务层又使用多个 RDMBS 表构造一个实例.表单包含您希望在这样的上下文中看到的类类型:Form=> IEnumerable=>IEnumerable
..
我正在使用 DDD 技术编写应用程序.这是我第一次尝试 DDD 项目.这也是我的第一个绿地项目,我是唯一的开发商.我已经充实了域模型和用户界面.现在我从持久层开始.像往常一样,我从单元测试开始. [测试]public void ShouldAddEmployerToCollection(){var雇主Repository = new EmployerRepository();var 雇主 = _
..
您知道代码中对项目至关重要但可能需要很多时间才能完成的特定部分吗?您是否有过这样的感觉:您宁愿从事其他工作(可能不太重要)或根本不编写代码而不是从事该部分工作?你努力避免并使用你知道的每一个懒惰的技巧来延迟它不可避免的实现的那个野兽? 现在,我可能只是懒惰,但我总是不得不处理这样的代码.写一些我不想写的东西(如果你是为了好玩而不是为了得到报酬而写的话,那就更糟了!).一个大型系统,需要花费大
..
今天听朋友说,封装不仅实现了信息隐藏,还实现了抽象.它是如何实现的? 公开课员工{私人字符串名称;私有整数 ID;公共无效集名称(字符串名称){this.name = 名称;}公共字符串getName(){返回名称;}} 上面的例子实现了封装,我允许类访问我的公共方法而不是私有成员,但是抽象在这里出现在哪里?谁能以一种清晰的方式解释我的抽象. 解决方案 有两种不同的东西,信息隐藏和抽象
..
我正在创建一个基类,以便子类的所有绑定都将设置在基类中 我已经做到了这一点 抽象类 BaseActivity2: AppCompatActivity() {私有 var viewBinding: B?= 空私有变量 baseViewModel:T?= 空覆盖 fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedIns
..
许多框架都试图从 HTML(自定义标签、JSF 组件系统)中抽象出来,以便更轻松地处理那个特定的鱼缸. 你们用过的有没有类似的概念应用于 CSS 的?为你做一堆跨浏览器魔法的东西,支持像变量(为什么每次我想要那种颜色时都必须输入#3c5c8d),支持计算字段(被“编译"成 CSS 和 JS)等. 或者,我的想法是否正确?我是否试图将一个非常方形的块推过一个非常圆的孔? 解决方案
..
我正在 Clojure 中开发具有多个子结构的复杂数据结构. 我知道随着时间的推移我会想要扩展这个结构,并且有时可能想要改变内部结构而不破坏数据结构的不同用户(例如我可能想要将向量更改为哈希图,添加一些一种出于性能原因的索引结构,或包含 Java 类型) 我目前的想法是: 为具有各种访问器方法的整体结构定义一个协议 创建一个小型函数库来导航数据结构,例如(查询子结构-abc p
..
假设我有一个使用结构数组 (AoS) 内存布局的大代码.我想用 C++ 构建一个零成本的抽象,它允许我以尽可能少的重构工作在 AoS 和 SoA 之间切换.例如获取一个具有访问成员函数的类 struct Item{自动&myDouble(){ 返回 mDouble;}自动&myChar(){ 返回 mChar;}自动&myString(){ 返回 mString;}私人的:双 mDouble;
..
我是彼得·朝圣者.我看到 Martin Odersky 在 Scala 中创建了一个控制抽象.但是我似乎还不能在 IntelliJ IDEA 9 中重复它.它是 IDE 吗? 打包演示类控制{def repeatLoop ( body: => Unit ) = new 直到( body )类直到(主体:=>单位){定义直到(条件:=>布尔){身体;val 值:Boolean = cond;pri
..
抽象是隐藏实现细节并只向用户展示功能的过程. 另一种方式,它只向用户显示重要的东西,隐藏内部细节.所以下面是一个创建抽象类并覆盖抽象方法的示例.但我不明白的是它是如何隐藏实现细节的? 抽象类银行{抽象 int getRateOfInterest();}SBI 类扩展银行{int getRateOfInterest(){返回7;}}PNB 类扩展银行{int getRateOfInteres
..
.net 中是否有可用的 ACL 抽象层?我看过一些“最佳实践"文档,但没有很好的基础实现.System.Security.AccessControl 怎么样?这是一个好的起点吗? ACL 应该与存储在 DB 中的角色以及系统角色以及内存对象定义以及 db 对象或文件一起使用.所以它应该是通用的和/或易于扩展的. 这是否应该依赖于 .net 框架中的 IPrincipal、IIdent
..
"抽象和封装是互补的概念:抽象侧重于对象的可观察行为……封装侧重于实现这一点行为...封装通常是通过信息隐藏实现的,这是隐藏对象所有与其本质特征无关的秘密的过程." - Grady Booch 面向对象分析与设计 您能否向我展示一些非常有说服力的示例,说明通过信息隐藏进行封装的好处? 解决方案 我的第一个 OO 课程中给出的示例: 想象一个媒体播放器.它抽象了播放、暂停、快进等
..
我有一个在列表中存储一些数据的对象.实现可能会在以后更改,我不想将内部实现公开给最终用户.但是,用户必须能够修改和访问此数据集合.目前我有这样的事情: public List获取数据(){返回 this.data;}public void setData(List data) {this.data = 数据;} 这是否意味着我允许内部实现细节泄露?我应该这样做吗? public Collec
..