Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1741193
  • 博文数量: 297
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 3006
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-06 22:04
个人简介

Linuxer, ex IBMer. GNU https://hmchzb19.github.io/

文章分类

全部博文(297)

文章存档

2020年(11)

2019年(15)

2018年(43)

2017年(79)

2016年(79)

2015年(58)

2014年(1)

2013年(8)

2012年(3)

分类: Java

2017-02-08 10:52:26

就是通过clone() 来创建一个新的对象。
代码一看就明白了,java 实现Cloneable()接口而实现的clone() 方法是shallow copy. 

点击(此处)折叠或打开

  1. package prototypepattern;

  2. class Bike implements Cloneable{

  3.     private int gears;
  4.     private String bikeType;
  5.     private String model;

  6.     public Bike(){
  7.         bikeType = "Standard";
  8.         model = "Leopard";
  9.         gears = 4;

  10.     }

  11.     public Bike clone(){
  12.         return new Bike();
  13.     }

  14.     public void makeAdvanced(){
  15.         bikeType = "Advanced";
  16.         model = "Jaguar";
  17.         gears = 6;

  18.     }

  19.     public String getModel(){
  20.         return model;
  21.     }

  22.     @Override
  23.     public String toString(){
  24.         return "Bike [gears ="+gears+",bikeType="+bikeType+",model="+
  25.             model+"]";
  26.     }
  27. }

  28. public class PrototypeDemo {
  29.     public Bike makeJaguar(Bike basicBike){
  30.         basicBike.makeAdvanced();
  31.         return basicBike;
  32.     }

  33.     public static void main(String[] args){
  34.         Bike bike = new Bike();
  35.         Bike basicBike = bike.clone();
  36.         PrototypeDemo pt = new PrototypeDemo();
  37.         Bike advancedBike = pt.makeJaguar(basicBike);
  38.         System.out.println("Prototype Design Pattern"+advancedBike.getModel());
  39.         System.out.println("Prototype Design Pattern"+advancedBike.toString());
  40.     }
  41. }



阅读(552) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~