Builderdevise模式和Factorydevise模式有什么区别? 哪一个更有利,为什么? 如果我想对这些模式进行testing和比较/对比,如何将我的发现表示为图表?
在JavaFX应用程序中,必须将javafx.application.Application分类,并且必须从此派生类中调用inheritance的launch()方法(尽pipe它是公共的),否则会引发exception。 launch()方法然后使用reflection来实例化派生类,使得在启动时难以为类成员设置值而不会丢失它们。 所有这一切对我来说都是不寻常的,我想知道为什么启动一个JavaFX应用程序是如此复杂,如果这种软件devise(devise模式?)有一个名称,或者它只是糟糕的devise? 编辑: 更具体地说,我想使用观察者模式,所以我的Java应用程序在文档加载时得到通知,如下所示: public class MyDocumentLoader extends Application { private ChangeListener<Worker.State> changeListener; public void setChangeListener(ChangeListener<Worker.State> changeListener) { this.changeListener = changeListener; } … public void loadDocument(String url) { webEngine.getLoadWorker().stateProperty().addListener(changeListener); webEngine.load(url); } … } 我需要在几个方法中的callback成员,理想情况下,我可以有多个加载文档的类的实例,所以我可以为不同的URL设置不同的ChangeListeners。
我试图为当前在LDAP存储中的主机数据提出一个PostgreSQL模式。 部分数据是机器可以拥有的主机名称列表,该属性通常是大多数人用来查找主机logging的关键。 我希望摆脱这种数据到RDBMS的一件事是能够设置主机名列的唯一性约束,以便重复的主机名不能分配。 如果主机只能有一个名字,那么这很容易,但是由于它们可以有多个,所以它更复杂。 我意识到完全规范化的方法是使用外键指向主机表的主机名表,但是我希望避免每个人都需要为最简单的查询进行连接: select hostnames.name,hosts.* from hostnames,hosts where hostnames.name = 'foobar' and hostnames.host_id = hosts.id; 我想使用PostgreSQL数组可以为此工作,他们当然使简单的查询简单: select * from hosts where names @> '{foobar}'; 当我在hostnames属性上设置唯一性约束时,它当然会将整个名称列表视为唯一值而不是每个名称。 有没有办法让每个行中的每个名称都是唯一的呢? 如果不是的话,有没有人知道另一种更有意义的数据build模方法?
我有4种types的用户,每个都有特定的数据,但他们也共享通信数据,如username , password 。 我的第一个想法是创build一个user_type列的主要users表。 然后当查询用户数据时,我可以先select他们的user_type ,然后根据output运行不同的查询来获取“用户types”特定的数据。 我不喜欢这个,因为我希望我能抓住所有用户相关的数据与一个查询,最好使用外键。 第二个想法是在users表中没有user_type列,而是使用来自特定用户types表的外键将指向主users表的行。 我喜欢这个好一点,但我想我将不得不运行N个查询,其中N是每次我需要抓取用户数据的用户types的数量。 还有其他的select吗? 在这种情况下,最好的做法是什么? 非常感谢
考虑一个移动设备pipe理器系统,其中包含每个用户的信息,如存储他在手机上安装的应用程序的表格,审核详细信息,通知信息等。是否明智地为每个用户创build一个单独的模式? 对于单个用户来说,表格的数量是很大的,每个用户大约有30个表格。 将所有这些信息放到这些表中(反过来创build巨大的表),还是为每个用户创build一个模式,最好是有一个独立的模式? 提前致谢
对于如何避免头文件的循环依赖关系,你有什么好的build议吗? 当然,从一开始,我尽量devise这个项目是透明的。 但是,随着越来越多的function和类别的添加,项目变得越来越不透明,循环依赖开始发生。 有没有一般的,经过validation的工作规则? 谢谢。
我是devise和学习devise原理的新手。 它说从矩形派生矩形是违反李斯科夫替代原则的典型例子。 如果是这样的话,那么正确的devise应该是什么?
我遇到了一个非void方法缺lessreturn语句并且代码仍在编译的情况。 我知道while循环之后的语句是无法访问的 (死代码),永远不会被执行。 但是,为什么编译器甚至不会提醒你返回什么? 或者为什么一种语言允许我们有一个无限循环而不返回任何东西的非空方法? public int doNotReturnAnything() { while(true) { //do something } //no return statement } 如果我在while循环中添加一个break语句(即使是条件语句),编译器会抱怨臭名昭着的错误:“方法不返回值”(Eclipse)和“不是所有的代码path都返回值”(Visual Studio) public int doNotReturnAnything() { while(true) { if(mustReturn) break; //do something } //no return statement } Java和C#都是如此
我正在开发一个简单的应用程序来testing材料devise。 我使用com.android.support:appcompat-v7:21.0.0 ,我的行为如下所示: public class MyActivity extends ActionBarActivity { … } 布局被定义为: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MyActivity"> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="128dp" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimaryDark"/> </LinearLayout> 现在,我按照材料准则定义了我的主题: <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> <item name="colorPrimary">@color/colorPrimary500</item> <item name="colorPrimaryDark">@color/colorPrimaryDark700</item> </style> 我想在Android 5之前更改状态栏的颜色,并将其设置为colorPrimaryDark但我找不到方法。 我试过使用: getWindow().setStatusBarColor(..) 但setStatusBar颜色从21级可用。为什么如果我在我的主题中定义colorPrimaryDark并使用appcompact状态栏不会更改颜色? 任何人都可以帮忙
我了解编码到接口的原理 – 将接口的实现与接口分离,并允许交换接口的实现。 我应该编写接口为我写的每个类或是过度杀伤 ? 除非真的值得,否则我不想将项目中源文件的数量加倍。 我可以使用什么因素来决定是否通过接口进行编码?