• 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
    我是白素贞
    我是白素贞
  • 相关阅读:
    转 子查询
    260@365
    线程池
    转 nio    netty
    正则表达式匹配标签内的内容
    express接受ajax的发送post请求
    如何查看代码使用率
    ajax传文件用express的multer接住
    ajax 的post方法 的content-type设置和express里应用body-parser
    webpack4 es6转换
  • 原文地址:https://www.cnblogs.com/innosight/p/3271159.html
Copyright © 2020-2023  润新知