因此,我需要使用CSS制作重复的六边形图案.如果需要图像,我可以去那里,但我更愿意尽可能使用CSS.
以下是我想要创建的内容:
基本上,我只需要一种方法来创建六边形形状,然后在它们上面叠加文本/图像.我还没有太多代码,因为我不确定从哪里开始.问题是,我可以使用<div>
六角形的形状,如(http://css-tricks.com/examples/ShapesOfCSS/)所示,但它们不会连接.我可以使用重复的六边形图案,但后来我无法指定特定形状所需的文本或图像的确切位置.在此先感谢您的帮助.
关于将算法与类分离的讨论很多.但是,有一件事没有解释.
他们像这样使用访客
abstract class Expr {
public <T> T accept(Visitor<T> visitor) {visitor.visit(this);}
}
class ExprVisitor extends Visitor{
public Integer visit(Num num) {
return num.value;
}
public Integer visit(Sum sum) {
return sum.getLeft().accept(this) + sum.getRight().accept(this);
}
public Integer visit(Prod prod) {
return prod.getLeft().accept(this) * prod.getRight().accept(this);
}
Run Code Online (Sandbox Code Playgroud)
Visitor不会直接调用visit(element),而是要求元素调用其visit方法.它与所宣称的关于访客的阶级无意识的观念相矛盾.
PS1请用您自己的话解释或指出确切的解释.因为我得到的两个回答是指一般的和不确定的.
PS2我的猜测:由于getLeft()
返回基本Expression
,调用visit(getLeft())
将导致visit(Expression)
,而getLeft()
调用visit(this)
将导致另一个更合适的访问调用.因此,accept()
执行类型转换(也称为转换).
PS3 Scala的模式匹配=类固醇上的访客模式显示没有接受方法访问者模式的简单程度.维基百科补充说:通过链接一篇论文,显示" accept()
当反射可用时,方法是不必要的;为该技术引入术语'Walkabout'."
我正在探索Scala语言.我经常听到的一个主张是Scala具有比Java 更强大的类型系统.通过这个我认为人们的意思是:
scalac
拒绝某些错误的程序,它们javac
会愉快地编译,只会导致运行时错误.我这么认为是对的吗?
所以我正在学习学校的设计模式.今天我被告知'原型'的设计模式.
我必须遗漏一些东西,因为我没有看到它带来的好处.我见过网上的人说它比使用更快,new
但这没有意义; 在某些时候,无论新对象是如何创建的,都需要为它分配内存.
这种模式与"鸡蛋还是鸡蛋"问题在同一个圈子中运行吗?由于Prototype模式本质上只是克隆对象,因此在某些时候必须自己创建原始对象(即未克隆).这意味着我需要有一个我想要克隆的每个对象的现有副本已经准备好克隆了吗?
任何人都可以解释这种模式的用途是什么?
我目前正在与OCaml合作开展一个小项目; 一个简单的数学表达式简化器.我应该在表达式中找到某些模式,并简化它们,以便表达式中的括号数减少.到目前为止,我已经能够实现大多数规则,除了两个,为此我决定创建一个递归的,模式匹配的"过滤器"函数.我需要实现的两个规则是:
- 将形式a - (b + c)或类似形式的所有表达式转换为a - b - c
- 将形式a /(b*c)或类似的所有表达式转换为a/b/c
...我怀疑它会相当简单,一旦我设法实现了一个,我就可以轻松实现另一个.但是,我遇到了递归模式匹配函数的问题.我的类型表达式是这样的:
type expr =
| Var of string (* variable *)
| Sum of expr * expr (* sum *)
| Diff of expr * expr (* difference *)
| Prod of expr * expr (* product *)
| Quot of expr * expr (* quotient *)
;;
Run Code Online (Sandbox Code Playgroud)
我主要遇到麻烦的是在比赛表达中.例如,我正在尝试这样的事情:
let rec filter exp =
match exp with
| Var v -> Var v
| Sum(e1, …
Run Code Online (Sandbox Code Playgroud) 我正在阅读有关访客模式的内容,它看起来像Double Dispatch.两者之间有什么区别吗?这两个术语是否意思相同.
使用DateFormat的实例格式化和解析Java Date(或Calendar)类非常容易,即我可以将当前日期格式化为短的本地化日期,如下所示:
DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
String today = formatter.format(new Date());
Run Code Online (Sandbox Code Playgroud)
我的问题是:我需要获得这个本地化的模式字符串(即类似的东西"MM/dd/yy"
).这应该是一项微不足道的任务,但我找不到提供者......
有一次我讨论了设计,相对于命令模式.我的同行声明在调用.execute()方法后,命令对象不应返回状态(成功,不成功以及原因).原因是您不应该关心命令是否被执行,因为该命令必须不包含任何状态.但是,如果命令具有预期效果,则必须在调用后进行检查.他认为另一点是,在四人帮中,命令模式并不呈现这种情况(返回状态).
我声称相反的观点.GoF不会出现这种情况,但可以根据您的需要对模式进行建模.如果命令不成功,则调用客户端必须接收状态证明,并最终部署适当的反应.通过强制客户端检查操作是否成功是否容易出错并产生重复的代码.此外,在某些情况下,命令会产生一个结果(例如,一个向绘图添加一行的命令,将以某种方式将行ID返回给客户端),并假装没有状态的命令意味着你必须从数据模型中"捞出"新的对象标识符.
最后,我们通过不返回状态但保持命令对象中新创建的对象的id来达成妥协,并且应用程序仍然运行良好,但我现在很想知道您的意见.
这是关于工厂模式.我有点困惑.
我看到了createInstance()
方法是静态的实现和一些非静态的实现.
有人说这取决于"风格"或"味道",有些人说它没有.维基百科说它应该是非静态的,并且http://www.dofactory.com/Patterns/PatternFactory.aspx也表示它应该是非静态的,根据Gang of Four的说法.
我的问题是:它是否依赖于风格和品味,或者它是否违反了工厂模式,如果它是以静态方式实现的?什么是对的?
design-patterns factory factory-method factory-pattern static-factory
来自维基百科:
这个想法是,一旦完成,只能修改类的实现以纠正错误; 新功能或更改功能需要创建不同的类.该类可以通过继承重用原始类中的编码
根据我的理解,访问者模式是一种强大的技术,可以遍历使用双重调度实现相同接口的相似但不同的对象.在我的一个Java示例中,我创建了一组形成树结构的复合对象,这些对象的每个特定实现都实现了可访问的接口.访问者界面具有用于每个可访问对象的方法,并且具体访问者实现对每个这些情况执行的操作.
我试图解决的问题是,如果我要在复合结构中添加一个也实现可访问的新实现,那么我需要重新打开访问者界面并将该情况添加到它,也迫使我修改访问者的每个实现.
虽然这很好,但我还是需要这样做(如果访问者无法理解,那么访问者增加了什么好处?)但是在学术层面上,这不会违反开放封闭原则吗?这不是设计模式的核心原因之一吗?试图显示转换到这种模式的合理理由而不是维护switch语句来结束所有switch语句,但是每个人都认为代码将是相同的,每种情况的方法而不是交换机块,只是分解并且更难阅读.