我在看代理模式,对我而言,它似乎很像装饰器,适配器和桥模式.我误会了什么吗?有什么不同?为什么我会使用Proxy模式而不是其他模式?你过去在现实世界的项目中如何使用它们?
我正在嵌入SpiderMonkey以使我的C++库可编写脚本.为了使它可扩展,我需要定义一个继承库的一个C++基类的新类(JavaScript).
有没有一个例子告诉我如何使用SpiderMonkey做到这一点?
我读了整篇文章.它描述了包装类对其他有经验的程序员来说是什么,而不是像我这样的新手.
我理解PHP语法,面向对象的概念,但还没有在面向对象的代码中编写我自己的应用程序.在试图弄清楚包装类究竟是什么时,我感到很困惑.我不懂技术术语.
我希望有人以一个漂亮的详细的孩子般的描述回答,这个描述对于理解面向对象程序的基础知识的人来说很容易理解,并且已经阅读了几乎所有的php.net语言参考,但是没有实际的面向对象编程经验.尚未编写任何申请.
我找到了一篇旧帖子,但没有说明我对Wrapper Classes使用的设计模式的理解,而且,从维基百科阅读时我没有得到任何明确的信息.
包装类是否真的使用任何设计模式?
如果使用模式,那么其模式是它的这些:Decorator Pattern
,Facade Pattern
或Adapter Pattern
?
我正在学习OOP,特别是接口.我也在尝试学习SOLID,在这种情况下是D.
从这个站点,初始程序实现了'concretion' - 在这种情况下PDFBook
是typehinted传递给构造函数.稍后,此类型提示将更改为常规EBook
界面.接受任何实现此接口的内容.在这种情况下有道理.
但是,即使在对接口进行编码时,我发现通常还没有在接口中定义额外的方法,但这些方法对于该结构是唯一的.在这种情况下,PDFBook可能有一个doDPFOnlyThing
未在实现该EBook
接口的任何其他类中定义的方法.
如果我传递一个类型提示接口的PDFBook
对象,根据我的理解,如果我只使用接口中定义的方法- 那么这会坚持DIP是吗?因此,任何传递给实现接口的东西都可以调用它们的方法,因为它遵守接口契约.myFunc()
EBook
read()
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)
在这种情况下,做什么更好?
这是我在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)
在这里和其他网站上阅读包装类后,我无法得出结论,为什么以及如何在这里使用包装类而不是静态变量?
我喜欢在我的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有什么办法吗?
我是设计模式的新手,现在我正在开发一个开放的软件代码:所以我试图理解代码的体系结构:层,使用的设计模式......
所以我发现包含名为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) 例如,该google-speech-api
包被描述为"用于节点的Google Speech API包装器".
究竟什么是这种背景下的包装?
我正在尝试将字符串打印到文件中.我做错了什么,它总是给我一个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) 我知道为什么要使用接口和包装器。
但是我混淆了命名包装器类......(“谁是包装器?”我看我不太了解......)
public Interface A {
void method();
}
public Class B implements A {
void method() {
doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
我对两件事感到困惑......
Wrapper Class是 class ,所以 B 是包装器。
我们通常看到(或想到?)a.method() 而不是 b.method(),所以 A 是包装器。
什么是包装器?
一种?乙?
和...
如何使用“Wrapper”或“W”命名 A、B 好?
A、包装器?或B,BWrapper?还是其他人……?
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[]
以便add
set函数的方法可以避免同时接纳[0, 4, 5]
和[4, 5, 0]
?
java ×5
wrapper ×4
decorator ×2
interface ×2
php ×2
adapter ×1
arrays ×1
binary-tree ×1
bridge ×1
embedding ×1
facade ×1
javascript ×1
late-binding ×1
node.js ×1
oop ×1
set ×1
spidermonkey ×1
static ×1
vba ×1