个性化阅读
专注于IT技术分析

原型设计模式

原型模式说, 克隆现有对象而不是创建新对象, 也可以根据要求进行定制。

如果创建新对象的成本昂贵且占用大量资源, 则应遵循此模式。

原型模式的优势

原型模式的主要优点如下:

  • 它减少了子分类的需要。
  • 它隐藏了创建对象的复杂性。
  • 客户可以在不知道对象是哪种类型的情况下获取新对象。
  • 它使你可以在运行时添加或删除对象。

原型模式的用法

  • 在运行时实例化类时。
  • 当创建对象的成本昂贵或复杂时。
  • 当你希望使应用程序中的类数保持最少时。
  • 当客户端应用程序不需要知道对象的创建和表示时。

原型模式的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");
    
}

 public  EmployeeRecord(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.

输出量

原型设计图案输出1
赞(0)
未经允许不得转载:srcmini » 原型设计模式

评论 抢沙发

评论前必须登录!