室内装修网站html源码 企业,oa系统网站建设,网站建设流程百度经验,呼叫中心系统源码学会设计模式#xff0c;你就可以像拥有魔法一样#xff0c;在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们#xff08;GoF#xff09;凝聚出来的最佳实践#xff0c;可以提高代码的可读性、可维护性和可重用性#xff0c;从而让我们的开发效率更高。通…
学会设计模式你就可以像拥有魔法一样在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们GoF凝聚出来的最佳实践可以提高代码的可读性、可维护性和可重用性从而让我们的开发效率更高。通过不断的练习和实践掌握其中的奥妙选择合适的设计模式能为我们的项目增加一丝神奇的魔力。 文章目录 概念实例目的适用场景优点弊端类图框架用到的地方Coding测试测试结果 概念
用原型实例指定创建对象的种类并且通过拷贝这些原型创建新的对象。
实例
克隆原本的五菱宏光对象
目的
原本的五菱宏光修改配置后克隆对象配置不变
适用场景
需要复制一些对象同时又希望代码独立于这些对象所属的具体类
优点
1、使用原型模式创建实例对象比直接new一个对象性能好尤其创建大对象性能的差别非常明显。 2、简化创建对象的过程可以直接修改现有的对象实例的值达到复用的目的
弊端
1、每个对象内部都要覆盖Object的clone方法才能被拷贝当对类进行改造时需要修改代码违背了“开闭原则”。 2、如果克隆引用数据类型需要递归克隆
类图
框架用到的地方
Java 中Object 的 clone() 方法
Coding
Car
public class Car {private String name;private Integer box;private String power;public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getBox() {return box;}public void setBox(Integer box) {this.box box;}public String getPower() {return power;}public void setPower(String power) {this.power power;}public Car() {}public Car(Car car) {this.name car.getName();this.box car.getBox();this.power car.getPower();}public Car clone() {return new Car(this);}public void show() {System.out.println(一辆 this.getPower() this.getBox() 厢 this.getName());}
}测试
public class Test {public static void main(String[] args) {Car wuLing new Car();wuLing.setName(五菱宏光);wuLing.setBox(2);wuLing.setPower(汽油);System.out.println(----------原始配置----------);wuLing.show();//通过clone方法创建的新对象Car clone wuLing.clone();wuLing.setBox(3);//地址引用Car wuLing2 wuLing;System.out.println(----------修改配置后wuLing----------);wuLing.show();System.out.println(----------原始配置后wuLing2----------);wuLing2.show();System.out.println(----------原始配置后clone----------);clone.show();}
}我们可以看到wuLing2是直接将wuLing复制给自己因为Java的赋值只是传递地址所以wuLing2会随着wuLing的配置修改而改变。 但是调用clone的方法并没有因为wuLing的配置修改而修改这是因为clone是一个被克隆出来的全新对象java自带的clone方法是浅拷贝。 如果您想了解更多关于Java深拷贝和浅拷贝的信息可以到小名的另一篇文章Java对象浅拷贝与深拷贝进行详细了解
测试结果
----------原始配置----------
一辆汽油2厢五菱宏光
----------修改配置后wuLing----------
一辆汽油3厢五菱宏光
----------原始配置后wuLing2----------
一辆汽油3厢五菱宏光
----------原始配置后clone----------
一辆汽油2厢五菱宏光文章后期会持续优化如果觉得小名的文章帮助到了您请关注小名支持一下小名给小名的文章点赞、评论✍、收藏谢谢大家啦~♥♥♥ 编码魔法师系列文章会收录在小名的【设计模式】专栏中希望大家可以持续关注