/** "Product" */
class Pizza {
private String dough = "";
private String sauce = "";
private String topping = "";
public void setDough (String dough) { this.dough = dough; }
public void setSauce (String sauce) { this.sauce = sauce; }
public void setTopping (String topping) { this.topping = topping; }
}
''/** "Abstract Builder" */''
abstract class PizzaBuilder {
protected Pizza pizza;
public Pizza getPizza() { return pizza; }
public void createNewPizzaProduct() { pizza = new Pizza(); }
public abstract void buildDough();
public abstract void buildSauce();
public abstract void buildTopping();
}
/** "ConcreteBuilder" */
class HawaiianPizzaBuilder extends PizzaBuilder {
public void buildDough() { pizza.setDough("cross"); }
public void buildSauce() { pizza.setSauce("mild"); }
public void buildTopping() { pizza.setTopping("ham+pineapple"); }
}
/** "ConcreteBuilder" */
class SpicyPizzaBuilder extends PizzaBuilder {
public void buildDough() { pizza.setDough("pan baked"); }
public void buildSauce() { pizza.setSauce("hot"); }
public void buildTopping() { pizza.setTopping("pepperoni+salami"); }
}
''/** "Director" */''
class Waiter {
private PizzaBuilder pizzaBuilder;
public void setPizzaBuilder (PizzaBuilder pb) { pizzaBuilder = pb; }
public Pizza getPizza() { return pizzaBuilder.getPizza(); }
public void constructPizza() {
pizzaBuilder.createNewPizzaProduct();
pizzaBuilder.buildDough();
pizzaBuilder.buildSauce();
pizzaBuilder.buildTopping();
}
}
/** A customer ordering a pizza. */
class BuilderExample {
public static void main(String[] args) {
Waiter waiter = new Waiter();
PizzaBuilder hawaiian_pizzabuilder = new HawaiianPizzaBuilder();
PizzaBuilder spicy_pizzabuilder = new SpicyPizzaBuilder();
waiter.setPizzaBuilder ( hawaiian_pizzabuilder );
waiter.constructPizza();
Pizza pizza = waiter.getPizza();
}
}
public interface Prototype {
public abstract Object clone ( );
}
public class ConcretePrototype implements Prototype {
public Object clone() {
return super.clone();
}
}
public class Client {
public static void main( String arg[] )
{
ConcretePrototype obj1= new ConcretePrototype ();
ConcretePrototype obj2 = ConcretePrototype)obj1.clone();
}
}
public class ShallowClone implements Cloneable {
int age;
Person person;
public void setAge(int age){
this.age = age;
}
public void setPerson(String name){
person = new Person(name);
}
public Object clone() throws CloneNotSupportedException{
// 默认java实现的是浅复制
return super.clone();
}
}
public class Person {
String name;
public Person(String name){
this.name = name;
}
}
public class Test {
public static void main(String[] args) throws CloneNotSupportedException {
ShallowClone oldShallowClone = new ShallowClone();
oldShallowClone.setAge(20);
oldShallowClone.setPerson("eric");
System.out.println("oldname: " + oldShallowClone.person.name + " age: " + oldShallowClone.age);
ShallowClone newShallowClone = (ShallowClone)oldShallowClone.clone();
System.out.println("newname: " + newShallowClone.person.name + " age: " + newShallowClone.age);
oldShallowClone.age = 30;
oldShallowClone.person.name = "frank";
System.out.println("newname: " + newShallowClone.person.name + " age: " + newShallowClone.age);
}
}
oldname: eric age: 20 newname: eric age: 20 newname: frank age: 20
public class DeepClone {
int age;
Person person;
public void setAge(int age){
this.age = age;
}
public void setPerson(String name){
person = new Person(name);
}
public DeepClone(DeepClone deepClone){
this.age = deepClone.age;
this.person = new Person(deepClone.person.name);
}
public DeepClone() {}
public Object clone() throws CloneNotSupportedException{
return new DeepClone(this);
}
}
public class Test {
public static void main(String[] args) throws CloneNotSupportedException {
DeepClone oldDeepClone = new DeepClone();
oldDeepClone.setAge(20);
oldDeepClone.setPerson("eric");
System.out.println("oldname: " + oldDeepClone.person.name + " age: " + oldDeepClone.age);
DeepClone newDeepClone = (DeepClone)oldDeepClone.clone();
System.out.println("newname: " + newDeepClone.person.name + " age: " + newDeepClone.age);
oldDeepClone.age = 30;
oldDeepClone.person.name = "frank";
System.out.println("newname: " + newDeepClone.person.name + " age: " + newDeepClone.age);
}
}
oldname: eric age: 20 newname: eric age: 20 newname: eric age: 20
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有