网站登陆模板,农业网站建设公司,百度seo排名360,最流行的网站开发语言意图
用原型实例指定创建对象的种类#xff0c;并且通过复制这些原型创建新的对象。
结构 Prototype声明一个复制自身的接口。ConcretePrototype实现一个复制自身的操作。Client让一个原型复制自身从而创建一个新的对象。
适用性
当一个系统应该独立于他的产品创建、构成和…意图
用原型实例指定创建对象的种类并且通过复制这些原型创建新的对象。
结构 Prototype声明一个复制自身的接口。ConcretePrototype实现一个复制自身的操作。Client让一个原型复制自身从而创建一个新的对象。
适用性
当一个系统应该独立于他的产品创建、构成和表示时。当要实例化的类是在运行时刻指定时例如通过动态加载。为了避免创建一个与产品类层次平行的工厂类层次时。当一个累的实例只能有几个不同状态组合中的一种时建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
代码示例
// 产品接口
interface Product {Product clone();
}// 具体产品A
class ProductA implements Product {private String name;private int age;public ProductA(String name, int age) {this.name name;this.age age;}Overridepublic Product clone() {return new ProductA(name, age);}// ... 其他方法
}// 具体产品B
class ProductB implements Product {private String color;private double weight;public ProductB(String color, double weight) {this.color color;this.weight weight;}Overridepublic Product clone() {return new ProductB(color, weight);}// ... 其他方法
}// 客户端
public class Client {public static void main(String[] args) {// 创建原型对象ProductA productA new ProductA(ProductA, 10);ProductB productB new ProductB(Red, 1.5);// 克隆原型对象ProductA clonedProductA productA.clone();ProductB clonedProductB productB.clone();// 修改克隆对象clonedProductA.setName(ClonedProductA);clonedProductB.setColor(Blue);// 输出结果System.out.println(productA); // 输出: ProductA{nameProductA, age10}System.out.println(clonedProductA); // 输出: ProductA{nameClonedProductA, age10}System.out.println(productB); // 输出: ProductB{colorRed, weight1.5}System.out.println(clonedProductB); // 输出: ProductB{colorBlue, weight1.5}}
}