原型设计模式

【原型设计模式】原型模式说, 克隆现有对象而不是创建新对象, 也可以根据要求进行定制。
如果创建新对象的成本昂贵且占用大量资源, 则应遵循此模式。
原型模式的优势 原型模式的主要优点如下:

  • 它减少了子分类的需要。
  • 它隐藏了创建对象的复杂性。
  • 客户可以在不知道对象是哪种类型的情况下获取新对象。
  • 它使你可以在运行时添加或删除对象。
原型模式的用法
  • 在运行时实例化类时。
  • 当创建对象的成本昂贵或复杂时。
  • 当你希望使应用程序中的类数保持最少时。
  • 当客户端应用程序不需要知道对象的创建和表示时。
原型模式的UML
原型设计模式

文章图片
  • 我们将创建一个包含Prototype类型的方法getClone()的接口Prototype。
  • 然后, 我们创建一个具体的类EmployeeRecord, 该类实现了Prototype接口, 该接口可以克隆EmployeeRecord对象。
  • PrototypeDemo类将使用此具体类EmployeeRecord。
原型设计模式示例 让我们看一下原型设计模式的例子。
interface Prototype {public Prototype getClone(); }//End of Prototype interface.

class EmployeeRecord implements Prototype{private int id; private String name, designation; private double salary; private String address; public EmployeeRecord(){ System.out.println("Employee Records of Oracle Corporation "); System.out.println("---------------------------------------------"); System.out.println("Eid"+"\t"+"Ename"+"\t"+"Edesignation"+"\t"+"Esalary"+"\t\t"+"Eaddress"); } publicEmployeeRecord(int id, String name, String designation, double salary, String address) {this(); this.id = id; this.name = name; this.designation = designation; this.salary = salary; this.address = address; }public void showRecord(){System.out.println(id+"\t"+name+"\t"+designation+"\t"+salary+"\t"+address); }@Override public Prototype getClone() {return new EmployeeRecord(id, name, designation, salary, address); } }//End of EmployeeRecord class.

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class PrototypeDemo{ public static void main(String[] args) throws IOException {BufferedReader br =new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter Employee Id: "); int eid=Integer.parseInt(br.readLine()); System.out.print("\n"); System.out.print("Enter Employee Name: "); String ename=br.readLine(); System.out.print("\n"); System.out.print("Enter Employee Designation: "); String edesignation=br.readLine(); System.out.print("\n"); System.out.print("Enter Employee Address: "); String eaddress=br.readLine(); System.out.print("\n"); System.out.print("Enter Employee Salary: "); double esalary= Double.parseDouble(br.readLine()); System.out.print("\n"); EmployeeRecord e1=new EmployeeRecord(eid, ename, edesignation, esalary, eaddress); e1.showRecord(); System.out.println("\n"); EmployeeRecord e2=(EmployeeRecord) e1.getClone(); e2.showRecord(); } }//End of the ProtoypeDemo class.

输出量
原型设计模式

文章图片

    推荐阅读