各位老铁们,大家好,今天由我来为大家分享第六章:设计模式之原型模式解析,以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
3.优缺点
优点:
1. 性能改进。
2. 逃脱构造函数的约束。
缺点:
1.配备clone方法需要综合考虑类的功能。这对于全新的类来说并不困难,但对于现有的类来说可能并不容易,特别是当类引用不支持序列化的间接对象时。或者当引用包含循环结构时。
2、必须实现Cloneable接口。
4. 图片模型
image.png
5. 代码实现
1. 创建一个实现了 Cloneable 接口的抽象类
公共抽象类Shape 实现Cloneable {
私有字符串ID;
受保护的字符串类型;
抽象无效绘制();
公共字符串getType(){
返回类型;
}
公共字符串getId() {
返回ID;
}
公共无效setId(字符串id){
这个.id=id;
}
公共对象克隆(){
对象克隆=空;
尝试{
克隆=super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
返回克隆;
}
}
2. 创建扩展了上面抽象类的实体类
公共类矩形扩展形状{
公共矩形(){
类型="矩形";
}
@覆盖
公共无效绘制(){
System.out.println("矩形:draw()方法内部。");
}
}公共类Square 扩展Shape {
公共广场(){
类型="方形";
}
@覆盖
公共无效绘制(){
System.out.println("Square:draw()方法内部。");
}
}公共类圆扩展形状{
公共圈子(){
类型="圆";
}
@覆盖
公共无效绘制(){
System.out.println("Circle:draw()方法内部。");
}
3. 创建一个类,从数据库获取实体类,并把它们存储在一个 Hashtable 中
导入java.util.Hashtable;
公共类ShapeCache {
私有静态HashtableshapeMap
=新的哈希表();
公共静态形状getShape(String shapeId) {
形状cachedShape=shapeMap.get(shapeId);
返回(形状)cachedShape.clone();
}
//对每个形状运行数据库查询并创建形状
//shapeMap.put(shapeKey, shape);
//例如我们要添加三个形状
公共静态无效loadCache(){
圆圆=new Circle();
圆.setId("1");
shapeMap.put(circle.getId(),circle);
正方形正方形=new Square();
square.setId("2");
shapeMap.put(square.getId(),square);
矩形矩形=new 矩形();
矩形.setId("3");
shapeMap.put(矩形.getId(),矩形);
}
}
4. PrototypePatternDemo 使用 ShapeCache 类来获取存储在 Hashtable 中的形状的克隆
公共类PrototypePatternDemo {
公共静态无效主(字符串[] args){
ShapeCache.loadCache();
形状克隆Shape=(形状) ShapeCache.getShape("1");
System.out.println("形状:" + clonedShape.getType());
形状克隆Shape2=(形状) ShapeCache.getShape("2");
System.out.println("形状:" + clonedShape2.getType());
形状克隆Shape3=(形状) ShapeCache.getShape("3");
System.out.println("形状:" + clonedShape3.getType());
}
【第六章:设计模式之原型模式解析】相关文章:
用户评论
终于到了原型模式!我一直对这个设计模式很感兴趣。
有11位网友表示赞同!
之前学过一些其他设计模式,不过prototype pattern确实听起来很新颖。
有6位网友表示赞同!
原型模式能解决什么问题?我有点好奇...
有19位网友表示赞同!
感觉这个模式应该可以加速产品的开发过程吧?
有11位网友表示赞同!
是不是可以用原型模式来克隆对象?
有19位网友表示赞同!
我对Prototype Pattern的实现方式很期待,希望能简单易懂。
有12位网友表示赞同!
我会试着把原型模式应用到自己的项目里,看看效果如何。
有17位网友表示赞同!
学习 Prototype Pattern 之前我已经对 Object-Oriented Design 初有了了解?
有11位网友表示赞同!
我感觉原型模式应该能够减少代码冗余,能提高代码的效率。
有7位网友表示赞同!
希望能够在本章中详细学习到原型的创建、克隆以及更新的方法。
有11位网友表示赞同!
期待看到一些具体的例子和应用场景,这样才能更理解这个模式。
有10位网友表示赞同!
我一直觉得 OOP 的设计模式确实很强大,Prototype Pattern 应该也不例外。
有5位网友表示赞同!
我要看看 Prototype Pattern 与其他设计模式之间的关系是什么?
有13位网友表示赞同!
希望本章能介绍一些Prototype Pattern的优缺点,方便我更好地选择使用它。
有14位网友表示赞同!
感觉学习完这个章节之后,我的软件设计能力会提升不少。
有5位网友表示赞同!
学习 Prototype Pattern 不仅可以提高代码质量,也能帮助我更深入理解 OOP 原理。
有13位网友表示赞同!
我已经开始关注与原型模式相关的开源项目了,希望能找到一些实践案例参考。
有5位网友表示赞同!