广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州Java原型模式是什么?_北大青鸟IT计算机学校

作者:邓华发布时间:2021-03-29分类:Java技术浏览:1104


导读:之前惠州北大青鸟学术部老师给大家介绍了这么多Java设计模式,下面我们继续来学习Java原型模式是什么,希望大家能从中获益。

之前惠州北大青鸟学术部老师给大家介绍了这么多Java设计模式,下面我们继续来学习Java原型模式是什么,希望大家能从中获益。

原型模式是创建模式之一。

原型模式有助于创建具有更好性能的重复对象。

在原型模式中,将返回一个现有对象的克隆,而不是创建新的对象。

我们使用原型设计模式,如果创建一个新对象的成本是昂贵和资源密集型。

抽象工厂模式是Java创建型设计模式的其中一种。

例子

以下代码显示如何使用Prototype Pattern创建对象。

首先它创建一个Shape抽象类,实现Cloneable接口。

abstract class Shape implements Cloneable {  
  private String id;   protected String type;  
  abstract void draw();  
  public String getType(){
     return type;
  }  
  public String getId() {
     return id;
  }  
  public void setId(String id) {
     this.id = id;
  }  
  public Object clone() {
     Object clone = null;      try {         clone = super.clone();
     } catch (CloneNotSupportedException e) {
        e.printStackTrace();
     }
     return clone;
  }
}

然后它创建三个具体的类扩展Shape类。

class Rectangle extends Shape {   public Rectangle(){
    type = "Rectangle";
  }

  @Override   public void draw() {
     System.out.println("Inside Rectangle::draw() method.");
  }
}class Square extends Shape {   public Square(){
    type = "Square";
  }

  @Override   public void draw() {
     System.out.println("Inside Square::draw() method.");
  }
}class Circle extends Shape {   public Circle(){
    type = "Circle";
  }

  @Override   public void draw() {
     System.out.println("Inside Circle::draw() method.");
  }
}

之后,它创建一个ShapeProtoType类来返回形状的原型。

class ShapeProtoType{   private static Hashtable<String, Shape> shapeMap
     = new Hashtable<String, Shape>();   public static Shape getShape(String shapeId) {
     Shape cachedShape = shapeMap.get(shapeId);      return (Shape) cachedShape.clone();
  }   public static void loadCache() {
     Circle circle = new Circle();
     circle.setId("1");
     shapeMap.put(circle.getId(),circle);

     Square square = new Square();
     square.setId("2");
     shapeMap.put(square.getId(),square);

     Rectangle rectangle = new Rectangle();
     rectangle.setId("3");
     shapeMap.put(rectangle.getId(),rectangle);
  }
}public class Main{   public static void main(String[] args) {
     ShapeProtoType.loadCache();

     Shape clonedShape = (Shape) ShapeProtoType.getShape("1");
     System.out.println("Shape : " + clonedShape.getType());    

     Shape clonedShape2 = (Shape) ShapeProtoType.getShape("2");
     System.out.println("Shape : " + clonedShape2.getType());    

     Shape clonedShape3 = (Shape) ShapeProtoType.getShape("3");
     System.out.println("Shape : " + clonedShape3.getType());    
  }
}

上面的代码生成以下结果。

Shape:Circle

Shape:Square

Shape:Rectangal

想知道更多关于Java的资讯,联系在线客服,或者来惠州北大青鸟新方舟校区了解了解。

Java11.png

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表