小编Sed*_*nus的帖子

MVP中的组合与继承

我正在使用MVP模式开发大规模应用程序.在开发过程中,我提出了是否应该使用组合或继承的问题.例如:让我们假设我有一个名为形式美孚与场一个.在本申请的另一部分我有一个表格具有相同字段但附加字段Ç.

目前,代码是使用继承方法编写的,其中表单Bar从表单Foo继承.然后,演示者处理与模型略有不同的数据.这很简单,但是如果遵循"是A"的经验法则,是否打败我,因为即使表格不同,它们也处理公共输入(A和B).

然而,在这里我一直在考虑"继承的构成"和Liskov替换原则,并认为我应该使用组合而不是继承.然而,因为我使用的是MVP,所以它比预期的要复杂得多,因为我必须有一个表格Foo的演示者,字段AB,然后是一个带有字段C的Bar的演示者,以及对Foo的演示者的引用,以便它可以将字段AB注入其中.

问题是它已被证明是更多的代码,因为我必须在Foo的演示者中添加一些排序getter和setter,以便能够将数据传递给Bar.如果我打破MVP以提供作曲,这感觉就像某种程度.

所以我的问题是:

对于我的情况,使用组合而不是继承是否真的更好?为什么?

使用组合"打破"MVP?

mvp user-interface inheritance design-patterns composition

20
推荐指数
4
解决办法
1864
查看次数

枚举方法覆盖

我发现Enums定义如下:

public Enum MyEnum {

   ONE
   {
      @Override
      public int getSomething() {
         return 1;
      } 
   },

   TWO
   {
      @Override
      public int getSomething() {
        return 2;
      }
   }

   int getSomething()
   {
      return 0;
   }
}
Run Code Online (Sandbox Code Playgroud)

不知何故,我觉得这种实现有些不适,因为我认为理想情况下应该为此目的定义一个字段,类应该类似于:

public Enum MyEnum{

   ONE(1),
   TWO(2)

   private int theSomething;

   private MyEnum(int something) {
      theSomething = something;
   }

   int getSomething()
   {
      return theSomething;
   }
}
Run Code Online (Sandbox Code Playgroud)

问题是,除了个人的不适,我找不到任何改变此代码的充分理由.有存在吗?

java enums coding-style

17
推荐指数
1
解决办法
2万
查看次数

jquery datepicker年份范围默认

对JQuery有一点问题datePicker,我怀疑这只是我忽略或错误的设置问题.

如果你看看这个简单的小提琴:JS Fiddle

你会看到我已经设置了年份范围,所以默认情况下,当你点击输入它会在1994年打开它,但是如果你然后点击任何这些日期,例如9月3日,它实际上把它放在2012年的输入中,而不是在下拉菜单中选择的年份.

如何才能使用正确的年份而不必更改下拉菜单然后再将其更改回来?

干杯.

javascript jquery jquery-ui

7
推荐指数
2
解决办法
1万
查看次数

为什么我不能直接使用索引访问数组?

当我尝试直接使用索引访问数组元素时,我感到困惑.我想我可以在编码中更好地解释它: -

我有一个Employee Class的对象和我TypeCast它到数组并尝试显示如下:

$arrOfObj = (array) $objEmployee;

$arrKeys = array_keys( $arrOfObj );

display( $arrOfObj ); // display() is a method in my library that prints an array in a mannered way.
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出: -

Array
(
   [*m_UserId] => 1155
   [*m_EmailPassword] => 
   [*m_IsAssignedToManagementCompany] => 
   [*m_ManagementCompanyId] => 
   [*m_DepartmentId] => 3
   [*m_DesignationId] => 4
   [*m_EmployeeCompletedMonth] => 
   [*m_EmployeeCompletedDay] => 
   [*m_EmailAddress] =>showket.mca@gmail.com
   ------
   ------
 )
Run Code Online (Sandbox Code Playgroud)

现在我在这里不明白这个星(*).当我的成员变量很简单时,如m_UserId,m_EmialPassword等等,从中得到这个星.当我尝试用以下2个语句显示相同时我得到一个错误: -

display( $arrOfObj['*m_EmailAddress'] );
Run Code Online (Sandbox Code Playgroud)

要么

display( $arrOfObj['m_EmailAddress'] );
Run Code Online (Sandbox Code Playgroud)

两者都给出错误消息未定义索引:m_EmailAddress

当我尝试这样做它工作正常: -

display( $arrOfObj[$arrKeys[8]] );
Run Code Online (Sandbox Code Playgroud)

最后一个工作正常,任何人都可以解释我的问题.

            display( $arrOfObj[$arrKeys[11]] ); …
Run Code Online (Sandbox Code Playgroud)

php

7
推荐指数
1
解决办法
3501
查看次数

JScrollPane上的单杠

我用a JScrollPane来显示一个JTable.我希望表中的列具有最小尺寸,这样当缩小屏幕时,会出现水平滚动; 但我也希望它们能够在屏幕变宽时扩展.使用当前代码,tha列不会通过其最小值,只是视口停止显示整个表并且不会激活水平滚动条.是否有一个方法ti设置滚动条应显示的宽度?

这是我的一些代码:

private void addTable(JTable table){
    initColumnSizes(table);

    JPanel tablePanel = new JPanel(new BorderLayout());
    JScrollPane  scrolled = new JScrollPane(table);
    scrolled.getViewport().setMinimumSize(tableSize);
    scrolled.setMinimumSize(tableSize);
    scrolled.setPreferredSize(tableSize);
    scrolled.setBorder(border);

    tablePanel.add(scrolled, BorderLayout.CENTER);
    //more stuff
}
Run Code Online (Sandbox Code Playgroud)

以下是initColumns方法的代码,以备您需要时使用

private void initColumnSizes(JTable table) {
    TableModel model = table.getModel();
    TableColumn column = null;
    Component comp = null;
    int headerWidth = 0;
    int cellWidth = 0;
    TableCellRenderer headerRenderer =
        table.getTableHeader().getDefaultRenderer();

    for (int i = 0; i > table.getColumnCount(); i++) {
        column = table.getColumnModel().getColumn(i);
        comp = headerRenderer.getTableCellRendererComponent(
                table, column.getHeaderValue(), …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jscrollpane

5
推荐指数
1
解决办法
3299
查看次数

Highchart tick间隔

我似乎无法弄清楚如何正确设置我的刻度间隔.
需要在X轴上按小时计时.
数据是基于分钟的.

使用Javascript:

$(function () {
    var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'spline'
            },
            title: {
                text: 'Temperature Today'
            },
            xAxis: {
                type: "datetime",
                categories: time,
                dateTimeLabelFormats: {
                    day: '%h'
                },
                minTickInterval: 24 * 36000000 * 1000,
            },
            yAxis: {
                title: {
                    text: 'Temperature'
                },
                minorGridLineWidth: 0,
                gridLineWidth: 0,
                alternateGridColor: null
            },
            tooltip: {
                formatter: function() {
                        return ''+
                        Highcharts.dateFormat('%e. %b %Y, %H:00', this.x) +': '+ this.y;
                }
            },
            plotOptions: {
                spline: …
Run Code Online (Sandbox Code Playgroud)

javascript highcharts pchart

5
推荐指数
1
解决办法
3万
查看次数

在html上快速加载许多图像

我正在编写一个脚本,用户在其中选择一系列数据,然后从服务器获取一堆图像(超过150个)然后我通过它们循环来制作像电影一样的东西.我想知道的是在移动图像时加载防止滞后的最有效方法.

目前,我使用Ajax从服务器获取图像,并将它们存储在JavaScript上的Image对象数组中.在HTML中我有一个div标签,我希望在其中放置图像.在我完成了在数组中创建所有Image对象(并设置其正确的src)后,我执行以下操作:

imgElem = document.createElement('img');
document.getElementById('loopLocation').appendChild(imgElem);
imgElem.src = images[0].src;
Run Code Online (Sandbox Code Playgroud)

在此之后,我只是进行最后一次调用,但更改了循环索引.我每400毫秒做一次.循环工作,但有时它滞后,它在图像上冻结的时间应该更长.我想知道我是否能够从客户端改进这一点,或者我只需要一台响应速度更快的服务器.

html javascript ajax

4
推荐指数
1
解决办法
6477
查看次数

错误的当前时间 - php时间功能

我在PHP中的时间函数有问题.

它提供了不同的时间.

例如,我电脑当前的时间是上午10点,它显示晚了5个小时..

有什么想法吗?

提前致谢

html php

2
推荐指数
1
解决办法
1192
查看次数

使用Eclipse进行GWT开发

我正在使用eclipse开发一个GWT应用程序,我想知道是否有一种方法可以热插拔我所做的客户端代码更改,而无需每次都进行完整的Google Compile.目前,当我修改代码时,我会进行Google编译,然后单击"重新加载服务器"按钮,然后刷新浏览器以获取更改.这开始变得有点痛苦,因为当我可能只修改了一个UI字符串需要10-20秒才能进行完全编译,因此我们想知道是否有更快的方法.

eclipse gwt

1
推荐指数
1
解决办法
113
查看次数

在写"尝试"时,我们为什么要总是写一个"捕获"?

最近我与一位开发人员进行了一次有趣的对话,他告诉我,每次你写"尝试"时,都必须提供一个"捕获".他无法解释为什么这个规则.他告诉我这是一个良好的编程原则.为什么这个规则?

对于您的信息,我不同意他的看法.我认为有时候你可以写一个只有"finally"块的"try"块.但是,我认为如果你写一个"捕获",你必须在你的捕获中做一些事情.永远不要只是重新抛出错误.

try-catch

0
推荐指数
2
解决办法
268
查看次数