相关疑难解决方法(0)

访客和策略模式之间有什么区别?

我已经学会了这两种模式但却不理解这两种模式之间的差异.

我不知道场景,何时何地使用这些模式.

任何人都可以解释差异和用例吗?

java design-patterns strategy-pattern visitor-pattern

9
推荐指数
3
解决办法
3950
查看次数

mvp模式中winforms之间的通信

我正在处理开发我的应用程序的一个大问题.它是C#上实现Model-View-Presenter模式的Winforms基础应用程序,但我是这个方法的新手.我到处搜索,但没有找到我的问题的答案.

我需要知道如何使用这种模式来允许winforms之间的通信,以及演示者如何在不将演示者与表单耦合的情况下显示它们.我已经看到了使用Factory模式的方法,但是不明白如何实现它.

任何帮助或指向正确的方向将不胜感激.

mvp design-patterns communication winforms

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

依赖性反转和分离的接口模式(或一般的接口代码)之间有什么区别?

我无法弄清楚依赖性反转原理(SOLID原则之一)与通用"代码到接口"或分离接口模式之间的区别.他们都提倡创建一个抽象层来分离较低级别和较高级别的模块.

DI原则设想创建在更高层和更低层模块之间交互的接口,但也坚持接口必须是更高层包的一部分.
为什么这应该是更高层次而不是更低层次的一部分?它是暴露其行为的较低级别,所以解耦接口不应该是较低级别的一部分吗?如果有多个更高级别的模块取决于相同的较低级别怎么办?

或者,
为什么不制作一个单独的包来放置所有接口,然后可以被更高级别和更低级别使用?(这是分离接口模式设想的.)

我的困境是,我无法弄清楚它们的相对用途和好处.

请不要引用Derek Greer或Robert Martin的文章.我读过这些文章,但仍然存在混淆.

java interface dependency-inversion

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

WebDriver与ChromeDriver

在Selenium 2 - Java中,有什么区别

ChromeDriver driver = new ChromeDriver();

WebDriver driver = new ChromeDriver();

?我已经看到这些用于各种教程,示例等.

java google-chrome webdriver selenium-chromedriver selenium-webdriver

9
推荐指数
2
解决办法
8096
查看次数

java.util包 - 类和接口

为什么Queue是一个接口,但像StackArrayList这样的其他类是什么?

我知道接口是这样的,客户端可以实现它们并添加自己的方法,而对于类,如果每个客户端都需要它们的方法,它将变得庞大和膨胀.

......或者我在这里遗失了什么?

java queue stack interface

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

在没有实例的情况下创建枚举有什么用?

我正在阅读并通过枚举实现场景.我想我们可以创建一个没有任何实例的枚举.这样的实际用途是Enum什么?其次Enum也可以实现一个接口,但显然不能扩展一个类,因为它已经扩展了类Enum.创建Enum没有实例的实际优势是什么?本

java

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

为什么Java编译器允许在throws部分中列出异常,该方法无法抛出异常

如果有一些代码显然无法抛出异常,那么Java编译器似乎不一致,并且您编写了声明代码可以抛出该异常的周围代码.

请考虑这些代码段.

片段1

一个catch永远不会被抛出的异常.

public void g(){
        try {

        } catch (FileNotFoundException e) {//any checked exception

        }

}
Run Code Online (Sandbox Code Playgroud)

消息是编译错误

Unreachable catch block for FileNotFoundException. This exception is never thrown from the try statement body
Run Code Online (Sandbox Code Playgroud)

Snippet2

一个throws声明,指示从不抛出的异常.

public void g() throws FileNotFoundException{
}
Run Code Online (Sandbox Code Playgroud)

它汇编很好.

因此,第一个代码段的结果显示编译器可以计算方法是否可以抛出throws列表中列出的异常.因此,似乎编译器故意不报告第二个片段的错误.但为什么?为什么编译器允许您在throws部分中编写异常,即使编译器知道这些异常不能被抛出?

java exception-handling exception

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

声明ArrayList或集合实现类的最佳实践

任何人都可以解释以下ArrayList存储声明的区别String.

List type1 = new ArrayList();
List type2 = new ArrayList<String>();
List<String> type3 = new ArrayList<String>();
ArrayList<String> type4 = new ArrayList<String>();
List<String> type5 = null;
ArrayList<String> type6 = null;
Run Code Online (Sandbox Code Playgroud)

那么上面哪个声明是声明ArrayListString的最佳做法,为什么?

java collections arraylist

8
推荐指数
2
解决办法
4510
查看次数

为什么要引用Derived Class创建一个Base Class对象

我正在练习继承,在C#中使用测试程序,我发现以下语句不会引发错误:

BaseClass baseObj = new DerivedClass();
Run Code Online (Sandbox Code Playgroud)

为什么允许这种说法,是否存在这种说法对程序员有用的情况?

这是我的测试程序:

class BaseClass
{
    public void show()
    {
        Console.WriteLine("Base Class!");

    }
}

class DerivedClass : BaseClass
{
    public void Display()
    {
        Console.WriteLine("Derived Class!");            
    }
}

class Result
{
    public static void Main()
    {            
        BaseClass baseObj = new DerivedClass();
        baseObj.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# inheritance

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

如何记录现有代码的List接口方法

我有现有的代码库,有时使用ArrayList或LinkedList,我需要找到一种方法来记录每次调用添加或删除时跟踪已添加或删除的内容.

确保登录到位的最佳方法是什么?

所以举个例子.

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(123);
Run Code Online (Sandbox Code Playgroud)

LinkedList<Integer> anotherNewList = new LinkedList<Integer>();
anotherNewList.add(333);
Run Code Online (Sandbox Code Playgroud)

不确定我是否可以拦截add方法来实现这一点,或者创建实现java.util.List接口的重写类,然后使用它.无论哪种方式,我都在寻找一个需要最少干预的优秀解决方案,而且不需要使用任何第三方软件包......

java

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