相关疑难解决方法(0)

代理,装饰器,适配器和桥接模式有何不同?

我在看代理模式,对我而言,它似乎很像装饰器,适配器和桥模式.我误会了什么吗?有什么不同?为什么我会使用Proxy模式而不是其他模式?你过去在现实世界的项目中如何使用它们?

design-patterns bridge decorator proxy-pattern

381
推荐指数
8
解决办法
7万
查看次数

如何在JavaScript中继承C++类?

我正在嵌入SpiderMonkey以使我的C++库可编写脚本.为了使它可扩展,我需要定义一个继承库的一个C++基类的新类(JavaScript).

有没有一个例子告诉我如何使用SpiderMonkey做到这一点?

javascript embedding spidermonkey

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

我需要一个包装类的解释,其中包含一个孩子会理解的例子

我读了整篇文章.它描述了包装类对其他有经验的程序员来说是什么,而不是像我这样的新手.

我理解PHP语法,面向对象的概念,但还没有在面向对象的代码中编写我自己的应用程序.在试图弄清楚包装类究竟是什么时,我感到很困惑.我不懂技术术语.

我希望有人以一个漂亮的详细的孩子般的描述回答,这个描述对于理解面向对象程序的基础知识的人来说很容易理解,并且已经阅读了几乎所有的php.net语言参考,但是没有实际的面向对象编程经验.尚未编写任何申请.

php

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

包装类在Java中使用的设计模式?

我找到了一篇旧帖子,但没有说明我对Wrapper Classes使用的设计模式的理解,而且,从维基百科阅读时我没有得到任何明确的信息.

包装类是否真的使用任何设计模式?

如果使用模式,那么其模式是它的这些:Decorator Pattern,Facade PatternAdapter Pattern

design-patterns facade decorator adapter wrapper

15
推荐指数
3
解决办法
4424
查看次数

依赖性反转和接口

我正在学习OOP,特别是接口.我也在尝试学习SOLID,在这种情况下是D.

这个站点,初始程序实现了'concretion' - 在这种情况下PDFBook是typehinted传递给构造函数.稍后,此类型提示将更改为常规EBook界面.接受任何实现此接口的内容.在这种情况下有道理.

但是,即使在对接口进行编码时,我发现通常还没有在接口中定义额外的方法,但这些方法对于该结构是唯一的.在这种情况下,PDFBook可能有一个doDPFOnlyThing未在实现该EBook接口的任何其他类中定义的方法.

如果我传递一个类型提示接口的PDFBook对象,根据我的理解,如果我使用接口中定义的方法- 那么这会坚持DIP是吗?因此,任何传递给实现接口的东西都可以调用它们的方法,因为它遵守接口契约.myFunc()EBookread()myFunc()read()

myFunc(Ebook $book) {

    $book->read();
}
Run Code Online (Sandbox Code Playgroud)

如果只能在PDFBook类中myFunc()使用doDPFOnlyThing(),该怎么办?我假设这会添加依赖关系,因为这种方法只存在于PDFBook具体结果中?

myFunc(Ebook $book) {

    $book->doDPFOnlyThing();
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,做什么更好?

php oop interface

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

使用包装类而不是静态变量

这是我在StackOverFlow上的第一个问题:我正在学习采访"Cracking the code interview"(第5版)的书,我正在解决下一个问题:

实现一个函数来检查二叉树是否是二叉搜索树(Q 4.5 pg 86).

在继续之前,我想提醒您二进制搜索树与简单二叉树之间的区别:

二进制搜索树强加了这样的条件:对于所有节点,左子节点小于或等于当前节点,其小于所有右节点.

因此,本书提供的解决方案之一是使用按顺序遍历扫描树,并在运行中检查我们访问的每个节点是否大于最后一个节点,并假设树不能具有重复值:

public static int last_printed = Integer.MIN_VALUE;
public static boolean checkBST(TreeNode n) {
    if(n == null) return true;

        // Check / recurse left
        if (!checkBST(n.left)) return false;

        // Check current
        if (n.data <= last_printed) return false;
        last_printed = n.data;

        // Check / recurse right
        if (!checkBST(n.right)) return false;

        return true; // All good!
}
Run Code Online (Sandbox Code Playgroud)

现在,在这里一切都很好,但随后这本书引用:

如果您不喜欢使用静态变量,那么您可以调整此代码以使用整数的包装类,如下所示:

Class WrapInt {
    public int value;
}     
Run Code Online (Sandbox Code Playgroud)

在这里和其他网站上阅读包装类后,我无法得出结论,为什么以及如何在这里使用包装类而不是静态变量?

java static binary-tree wrapper binary-search-tree

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

在通过早期绑定使用它之前,我可以使用后期绑定来检查库的存在吗?

我喜欢在我的VBA项目中使用早期绑定,因为我喜欢在开发过程中自动完成方法名称等.我也很有信心知道编译器会在我拼写错误的方法名称时发出警告.

但是,要使用早期绑定,我需要添加对相关库的引用(例如,"Microsoft Scripting Runtime").这对于那样的"标准"库来说很好,但有时我想使用可能存在或不存在于用户机器上的库.

理想情况下,如果库不存在(例如"xyz未安装在此计算机上,因此无法使用此功能"),我希望显示有用的消息.如果我只使用后期绑定,那么我可以这样做:

Dim o As Object
Set o = CreateObject("foo", "bar")

If o Is Nothing Then
    MsgBox "nope"
End If
Run Code Online (Sandbox Code Playgroud)

但是,如果我添加了对库的引用以便使用早期绑定,那么如果库不存在,则在加载VBA项目时会出现编译错误.因此,没有代码运行(包括检测库不存在的代码).

围绕这个捕获22有什么办法吗?

vba late-binding early-binding

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

包装类是一种设计模式

我是设计模式的新手,现在我正在开发一个开放的软件代码:所以我试图理解代码的体系结构:层,使用的设计模式......

所以我发现包含名为EntityWrapper.java的类的包是一个例子:

包装类:

 package org.objectweb.salome_tmf.api.data;

 /**
  * @author marchemi
  */
public class ActionWrapper extends DataWrapper{
 String awaitedResult;
 int orderIndex;
 int idTest;
/**
 * @return Returns the orderIndex.
 */
public int getOrderIndex() {
    return orderIndex;
}
/**
 * @param orderIndex The orderIndex to set.
 */
public void setOrderIndex(int orderIndex) {
    this.orderIndex = orderIndex;
}
/**
 * @return Returns the waitedResult.
 */
public String getAwaitedResult() {
    return awaitedResult;
}
/**
 * @param waitedResult The waitedResult to set.
 */
public void setAwaitedResult(String awaitedResult) …
Run Code Online (Sandbox Code Playgroud)

java design-patterns

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

"Node.js的X包装器"通常意味着什么?

例如,该google-speech-api被描述为"用于节点的Google Speech API包装器".

究竟什么是这种背景下的包装?

wrapper node.js

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

NullPointerException写入文件的程序出错

我正在尝试将字符串打印到文件中.我做错了什么,它总是给我一个NullPointException?我相信我的异常会抓住某些东西或需要参数,我不会输入它.但是哪里?

我已经写了这个包含main函数的代码.

编辑:从底部第二行获取错误some.items[0]="Testing One!";.

import java.io.*;



public class StringPrinter {
            public String[] items;
            public File file;
            public StringPrinter(String fileName){
                    file = new File(fileName);}


            public void toFile(){
                    try{
                        PrintWriter pw = new PrintWriter(new FileWriter(file, false));
                            for (String st:items){ 
                                    pw.println(st);
                            }
                    }
                    catch(Exception exception){}
            }



    public static void main(String args[]){

        StringPrinter some=new StringPrinter("Workyou.txt");




        some.items[0]="Testing One!";
        some.items[1]="Testing Two!";

        some.toFile();


    }
}
Run Code Online (Sandbox Code Playgroud)

java error-handling

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

什么是接口和包装器?

我知道为什么要使用接口和包装器。

但是我混淆了命名包装器类......(“谁是包装器?”我看我不太了解......)

public Interface A {
    void method();
}

public Class B implements A {
    void method() {
        doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

我对两件事感到困惑......

  1. Wrapper Class是 class ,所以 B 是包装器。

  2. 我们通常看到(或想到?)a.method() 而不是 b.method(),所以 A 是包装器。

什么是包装器?

一种?乙?

和...

如何使用“Wrapper”或“W”命名 A、B 好?

A、包装器?或B,BWrapper?还是其他人……?

java design-patterns interface wrapper

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

如何覆盖数组的equals方法?

Set和List之间的主要区别在于set不允许重复.因此,List<Integer[]>我没有尝试创建一个Set<Integer[]>没有两个元素相等的东西.但是当我阅读时,我得到了以下结果Set<Integer[]>

[0, 4, 5]
[3, 4, 1]
[4, 5, 0]
[0, 3, 6]
[1, 3, 4]
[1, 2, 7]
Run Code Online (Sandbox Code Playgroud)

对于我的实现,[0, 4, 5]并且[4, 5, 0]被认为是相等的.因此我的问题是:有没有办法覆盖equals方法,Integer[]以便addset函数的方法可以避免同时接纳[0, 4, 5][4, 5, 0]

java arrays set

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