所有示例都是用Java编写的
tltr:向下滚动到生成器模式
例如,如果您有一个表示矩形的类,就会使用decorator模式。矩形类只有一个计算周长的方法。现在您要向矩形添加一个方法来计算面积。问题是,您既不能也不想编辑类矩形,因此创建了一个新类MySuperDuperRectangle,如下所示:
周边界面:
interface Perimeter{
public int perimeter();
}
由于某种原因我们无法改变的矩形
class Rectange implements perimeter{
private int a, b;
public Rectange(int a, int b){
this.a = a;
this.b = b;
}
public int getA(){
return a;
}
public int getB(){
return b;
}
public int perimeter(){
return 2 * a + 2 * b;
}
}
装饰的矩形:
class MySuperDuperRectange implements perimeter{
private Rectange r;
public MySuperDuperRectange(Rectange r){
this.r = r;
}
public int perimeter(){
return r.perimeter();
}
public float area(){
return r.getA() * r.getB();
}
}
我将使用Builder模式,因为任务是构建
比萨饼。
Builder模式用于构建后字按原样存在的东西(并且在任何时候都不应该被改变)。
PizzaBuiler的基本实现如下所示:
enum Dough{
WHITE, BROWN
}
enum Cheese{
WHITE, BROWN
}
顶部枚举:
enum Topping{
Kittens, Onions, Salami
}
yummi披萨:
class Pizza{
private Dough dough;
private Cheese cheese;
private HashSet<Topping> toppings;
private Pizza(Dough dough, Cheese cheese, HashSet<Topping> toppings){
this.dough = dough;
this.cheese = cheese;
this.toppings = toppings;
}
//add some getters
}
比萨布人:
class PizzaBuilder{
private Dough dough;
private Cheese cheese;
private HashSet<Topping> toppings = new HashSet<Topping>();
public PizzaBuilder(){
}
public PizzaBuilder setDough(Dough dough){
this.dough = dough;
return this;
}
public PizzaBuilder setCheese(Cheese cheese){
this.cheese = cheese;
return this;
}
public PizzaBuilder addTopping(Topping topping){
this.toppings.add(topping);
return this;
}
public Pizza buildPizza(){
return new Pizza(this.dough, this.cheese, this.toppings);
}
}
Pizza myPizza = new PizzaBuilder()
.setDough(Dough.WHITE)
.setCheese(Cheese.WHITE)
.addTopping(Topping.Kittens)
.addTopping(Topping.Salami)
.buildPizza();
我是设计模式领域的新手,我正在尝试了解其中的诀窍。我曾多次听到人们使用的“工厂”或“工厂模式”,但当我开始学习设计模式(目前我正在读GoF的书)时,我了解到实际上并不存在“工厂设计模式”这样的东西。GoF这本书描述了两种与工厂相关的模式:“抽象工厂”和“工厂方法”。 所以我的问题是这样的--当人们只说“工厂”(没有添加任何其他东西)时,他们实际上指的是哪种设计模式? 我找到了两个关于这件事的消息来
在网上搜索和阅读了关于设计模式的文章后,我发现了三种类型,即行为型、创造型和结构型设计模式(GOF)。
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。本文将介绍23种设计模式。
在众所周知的设计书《Domain-Driven Terms》中,它被描述为: 设计模式是命名、抽象和识别对可重用的面向对象设计有用的的通用设计结构。设计模式确定类和他们的实体、他们的角色和协作、还有他们的责任分配。 每一个设计模式都聚焦于一个面向对象的设计难题或问题。它描述了在其它设计的约束下它能否使用,使用它后的后果和得失。因为我们必须最终实现我们的设计模式,所以每个设计模式都提供了例子..代码
本文向大家介绍熟悉哪些设计模式?相关面试题,主要包含被问及熟悉哪些设计模式?时的应答技巧和注意事项,需要的朋友参考一下 按照自己的实际情况回答,当然是越多越好。比如我自己也就熟悉个单例模式。
我编写了一个程序来解析XML文件,以获取一个名为SerialNum的特定标记值,该值包含在Header标记中。该文件的构造如下: < li >它包含一个标题和一个正文 < li >标题可能包含许多SerialNum标签。我们需要提取最后一个标签的值。 我使用Stax解析器获取SerialNum值,并编写了以下代码: 此代码提取所需的值,但代码质量不是很好:它不容易阅读和维护。它包含一个开关案例,如