首页 > 其他分享 >原型模式(Prototype Pattern)

原型模式(Prototype Pattern)

时间:2024-09-16 14:22:18浏览次数:3  
标签:CloneNotSupportedException Pattern class Shape 原型 PrototypeManager Circle Protot

原型模式是一种创建型设计模式,使用克隆方法来复制现有对象,从而避免重复的初始化操作,特别适用于创建重复对象的场景。

适用场景:

  • 当一个系统需要创建新对象的对象系统中,可通过克隆一个原型并对其进行改造。
  • 当对象的创建成本比较大(如复杂的初始化)时。

示例代码:

abstract class Shape implements Cloneable {
    abstract void draw();
    
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

class Circle extends Shape {
    @Override
    void draw() {
        System.out.println("Drawing a Circle");
    }
}

class PrototypeManager {
    private Map<String, Shape> prototypes = new HashMap<>();

    public PrototypeManager() {
        prototypes.put("circle", new Circle());
        // 可以添加更多类型
    }

    public Shape getShape(String type) throws CloneNotSupportedException {
        return (Shape) prototypes.get(type).clone();
    }
}

public class Client {
    public static void main(String[] args) throws CloneNotSupportedException {
        PrototypeManager pm = new PrototypeManager();
        Shape shape = pm.getShape("circle");
        shape.draw(); // 输出: Drawing a Circle
    }
}

标签:CloneNotSupportedException,Pattern,class,Shape,原型,PrototypeManager,Circle,Protot
From: https://blog.csdn.net/weixin_43298211/article/details/142289673

相关文章

  • C# 设计模式:适配器模式(Adapter Pattern)
    摘要适配器模式是一种结构型设计模式,它允许不兼容的接口之间能够相互合作。这种模式涉及到一个单独的类,它负责加入独立的或不兼容的接口功能。简单来说,适配器模式就是一个中间件,它使得原本由于接口不兼容而不能一起工作的类可以一起工作。正文应用场景适配器模式通常应用于以下情况......
  • 设计模式-解释器模式-Interpreter Pattern
    系列文章目录总目录链接文章目录系列文章目录总目录链接设计模式-解释器模式-InterpreterPatternOverview1.解释器模式(InterpreterPattern)1.1.组成要素1.2.适用场景1.3.优点1.4.缺点1.5.示例代码(C++)2.解释器模式优缺点2.1.优点2.2.缺点3.解释器模式在实际开发中......
  • package.json依赖包漏洞之tough-cookie原型污染漏洞
    背景有个安全扫描的流水线,扫描了我负责的项目之后,发现一些漏洞。需要说明的是,这个扫描只是针对package.json文件,扫的是依赖树,而不是项目源代码,也不是build打包后的代码。这些正是我们提升项目安全性的宝贵机会。让我们一起来看看这些发现,并学习如何将它们转化为我们的优势。 ......
  • 3 原型化开发方法
    软件开发中的原型化方法,也称为快速原型法或原型法,是一种通过快速构建和迭代原型来辅助软件需求分析和设计的开发方法。以下是对其特点、实施过程、使用的方法和工具、优缺点的详细分析:一、特点快速迭代:原型化方法强调通过快速构建和迭代原型来逐步明确和完善需求,从而缩短开发......
  • 软件模式-原型模式
    原型模式的核心思想原型模式的核心是使用一个原型接口来定义一个克隆方法,该方法允许对象自身进行复制。通过这个克隆方法,可以快速生成一个与原型对象相同的实例,而不需要直接创建新对象并手动设置属性。原型模式的结构原型接口(Prototype):定义一个clone()方法,用于克隆对象。具......
  • Suricata 的 Fast Pattern 技术解析及其性能优化
    Suricata中的FastPattern是指在规则匹配过程中,Suricata优化性能的一种策略。其主要作用是加速规则的匹配过程,减少系统资源的消耗,从而提高整体的检测效率。思考过程:背景理解:在入侵检测系统(IDS)中,流量需要与一系列预定义的规则进行匹配,这些规则可能非常复杂且数量众多。直接匹配......
  • 面试-JS基础知识-原型和原型链
    JS本身是基于原型来继承的语言。问题引出:如何判断一个变量是不是数组?手写一个简易的jQuery,考虑插件和扩展性class的原型本质,怎么理解?知识点class和继承类型判断instanceof原型和原型链classclass相当于一个模版,可以用来构建(constructor)东西。classStudent{co......
  • GEE错误:Image.select: Band pattern ‘BQA‘ did not match any bands. Available ban
    目录错误原始代码Landsat8TOA数据介绍错误解析正确的代码 结果错误Errorinmap(ID=LC08_044034_20130603):Image.select:Bandpattern'BQA'didnotmatchanybands.Availablebands:[B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,QA_PIXEL,QA_RADSAT......
  • [Javascript] Function.prototype.call
    .callmethodexitsonanyfunction,whichwillreferto Function.prototype.callforexample:console.log.call===Function.prototype.call//call AlsoitmeansthatFunction.prototype.call===Function.prototype.call.call Question:console.log.call.cal......
  • 生成式 AI 和 RAG 代理及应用程序:已准备好迎接黄金时段还是仍处于原型阶段
    高盛发布了一份题为《GENAI:花费太多,收益太少?》的报告,对生成式AI的前景表示担忧。该报告总结了领先行业在一年多的时间内花费大量资金将GenAI投入生产但收效甚微的观察结果。很明显,GenAI与传统AI一样,在从原型和演示扩展到可能直接影响实际业务成果的生产系统时面临着重......