我正在阅读这篇文章 ,而这个人继续谈论如何人人都可以从面向数据的devise与面向对象的混合中受益匪浅。 但是他没有显示任何代码示例。 我GOOGLE了这一点,并没有find任何真正的信息,这是什么,更不用说任何代码示例。 有没有人熟悉这个术语,可以提供一个例子? 这可能是另外一个字吗?
我正在从网站阅读devise模式 在那里,我读到了工厂,工厂方法和抽象工厂,但他们是如此混乱,不清楚的定义。 根据定义 工厂 – 创build对象而不会将实例化逻辑暴露给客户端,并通过通用接口引用新创build的对象。 是Factory Method的简化版本 工厂方法 – 定义创build对象的接口,但让子类决定实例化哪个类,并通过一个公共接口引用新创build的对象。 抽象工厂 – 提供用于创build相关对象族的界面,而不显式指定其类。 我也看了关于抽象工厂vs工厂方法的其他stackoverflow线程,但绘制在那里的UML图使我的理解更加糟糕。 任何人都可以告诉我 这三种模式如何不同? 什么时候用哪个? 还有,如果可能的话,任何有关这些模式的Java示例?
在涉及面向对象的devise和分析时,面试和课堂中似乎有一组常见的问题。 这是其中之一; 不幸的是,我的大学OOP教授从来没有给出答案,所以我一直在想。 问题如下:devise一套基本的对象/方法来模拟电梯组。 什么是对象及其属性/方法? 为了辩论,让我们假设我们的build筑有二十层; 底层是大厅,二楼连接到停车场(因此,人们将在底层或二层进出build筑物)。 有一个电梯银行服务所有的楼层; 电梯组中有三个电梯竖井,每个电梯一个电梯。 在面向对象的模型中build立这个模型的正确方法是什么?
在C#和Java(也可能是其他语言)中,在“try”块中声明的variables不在相应的“catch”或“finally”块中。 例如,下面的代码不能编译: try { String s = "test"; // (more code…) } catch { Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead } 在这段代码中,在catch块中对s的引用发生编译时错误,因为s只在try块的范围内。 (在Java中,编译错误是“无法parsing”;在C#中,“名称在当前上下文中不存在”)。 这个问题的一般解决scheme似乎是在try块之前而不是在try块内声明variables: String s; try { s = "test"; // (more code…) } catch { Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead } 但是,至less对我来说,(1)这感觉像一个笨重的解决scheme,(2)它导致variables的范围比程序员想要的更大(整个方法的其余部分,而不是仅仅在上下文中的try-catch-最后)。 我的问题是,这个语言devise决定(Java,C#和/或任何其他适用的语言)背后的基本原理是什么?
我有一个名为Writer的类,它具有如下所示的函数writeVector : void Drawer::writeVector(vector<T> vec, bool index=true) { for (unsigned int i = 0; i < vec.size(); i++) { if (index) { cout << i << "\t"; } cout << vec[i] << "\n"; } } 我试图不要有重复的代码,同时仍然担心性能。 在函数中,我正在对我的for循环的每一轮执行if (index)检查,即使结果总是相同的。 这是对“担心performance”的反对。 我可以很容易地避免这种情况,把支票放在我以外的地方。 但是,我会得到大量重复的代码: void Drawer::writeVector(…) { if (index) { for (…) { cout << i << "\t" […]
我希望我的div适应其高度始终等于它的宽度。 宽度是百分比。 当父母的宽度减less时,盒子应该保持其纵横比减less。 如何做到这一点是CSS?
我正在开发一个Android应用程序,我正在使用RecyclerView 。 我需要在RecyclerView添加一个分隔符 。 我试图添加 – recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST)); 下面是我的xml代码 – <android.support.v7.widget.RecyclerView android:id="@+id/drawerList" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" />
我在过去几个月里一直和Lua打交道,而且我非常喜欢大部分function,但是我仍然错过了其中的一些东西: 为什么没有continue ? 有什么解决方法呢?
假设我必须使用C(没有C ++或面向对象的编译器),而且我没有dynamic内存分配,那么我可以使用一些技术来实现一个类,或者一个类的很好的近似值? 将“class级”隔离到一个单独的文件中总是一个好主意? 假设我们可以通过假设固定数量的实例来预先分配内存,甚至在编译时间之前将每个对象的引用定义为一个常量。 随意对我将需要实现哪个OOP概念做出假设(将会有所不同),并为每个概念提供最佳方法。 限制: 我必须使用C而不是OOP,因为我正在为embedded式系统编写代码,并且编译器和预先存在的代码库都在C中。 没有dynamic内存分配,因为我们没有足够的内存来合理地假设如果我们开始dynamic分配它,我们不会用完。 我们使用的编译器在函数指针方面没有问题
我们有一个保存应用程序configuration信息的类。 它曾经是一个单身人士。 经过一些build筑审查,我们被告知要删除单身人士。 我们确实看到了在unit testing中不使用单例的一些好处,因为我们可以一次testing不同的configuration。 如果没有单例,我们必须在代码中的任何地方传递实例。 它变得如此混乱,所以我们写了一个单例包装器。 现在我们将相同的代码移植到PHP和.NET,我想知道是否有更好的模式,我们可以使用configuration对象。