• GoF23种设计模式之创建型模式之原型模式


    一、概述

            用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    二、适用性

    1.当一个系统应该独立于它的产品创建、构成和表示的时候。

    2.当要实例化的类是在运行时刻指定的时候,例如:通过动态装载。

    3.为了避免创建一个与产品类层次平行的工厂类层次的时候。

    4.当一个类的实例只能有几个不同状态组合中的一种的时候。

            建立相应数目的原型并克隆它们可能要比每次用合适的状态手工实例化该类更方便一些。

    三、参与者

    1.Prototype:声明一个克隆自身的接口。

    2.ConcretePrototype:实现一个克隆自身的操作。

    3.Client:让一个原型克隆自身从而创建一个新的对象。

    四、类图


    五、示例

    Prototype

    package cn.lynn.prototype;
    
    public class Snake implements Cloneable {
    
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Object clone() {
            try {
                return super.clone();
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
    }
    
    ConcretePrototype

    package cn.lynn.prototype;
    
    public class WhiteSnake extends Snake {
    
        public WhiteSnake(String name) {
            setName(name);
        }
    
    }
    

    Client
    package cn.lynn.prototype;
    
    public class Client {
    
        public static void main(String[] args) {
            Snake snake1 = new WhiteSnake("我是白素贞");
            Snake snake2 = (Snake) snake1.clone();
            System.out.println(snake1.getName());
            System.out.println(snake2.getName());
        }
    
    }
    
    Result
    我是白素贞
    我是白素贞
  • 相关阅读:
    SQL Server中行列转换 Pivot UnPivot
    div层拖动
    INamingContainer 接口
    nhibernet并发出错
    百度空间的密码帐号
    委托与事件入门经典
    Left Join、Right Join、Inner Join的区别
    C#操作剪贴板
    hibernate源码分析 持久化原理[摘自JavaEye]
    SQLSERVER条件语句IF应用
  • 原文地址:https://www.cnblogs.com/innosight/p/3271159.html
Copyright © 2020-2023  润新知