目录
一、设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。绘制类图并编程实现。
二、使用单例模式的思想实现多例模式,确保系统中某个类的对象只能存在有限个,如两个或三个,设计并编写代码实现一个多例类。
这里对原型模式就不做详细介绍了,主要是单例模式。
原型模式:在创建一个对象的时候,直接从另外一个复制过来,用的不太多。
单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点(优点:1.对唯一实例的受控访问;2.单例相当于全局变量,但防止了命名空间被污染。)
单例模式示例:
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @Time :
# @Author :
# @Version:V 0.1
# @File : 单例模式.py
# @desc : 保证一个类只有一个实例,并提供一个访问它的全局访问点
class Singleton:
def __new__(cls, *args, **kwargs):
if not hasattr(cls, "_instance"):
cls._instance = super(Singleton, cls).__new__(cls)
return cls._instance
class MyClass(Singleton):
def __init__(self, a):
self.a = a
a = MyClass(10)
b = MyClass(20)
print(a.a)
print(b.a)
print(id(a), id(b))
一、设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。绘制类图并编程实现。
通常情况下,一个类包含一些成员对象,在使用原型模式克隆对象时,根据其成员对象是否也克隆,原型模式可以分为两种形式:深克隆与浅克隆,下面分别使用这两种方式来实现Customer对象的复制。
1.1 浅克隆实现Customer对象复制:
在浅克隆中,被复制对象的所有普通成员变量都具有与原来对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。也就是说,浅克隆仅仅复制所考虑的对象,不会复制它所引用的成员对象。类图与对应的Java代码如下:

图1 使用浅克隆实现Customer对象复制的模式结构图
为了获取对象的一份拷贝,我们可以利用Object类的clone()方法,步骤如下:(1)在派生类中覆盖基类的clone()方法,并声明为public;(2)在派生类的clone方法中,调用super.clone();(3)在派生类中实现Cloneable接口,具体代码实现如下(Java):
地址类(Address):
public class Address {
private String country;
private String province;
private String city;
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Address(String country, String province, String city) {
super();
this.country = country;
this.province = province;
this.city = city;
}
@Override
public String toString() {
return "Address

、单例模式(Java、Python)&spm=1001.2101.3001.5002&articleId=116135509&d=1&t=3&u=529fc49f6ded44818388769f7745b952)
2521

被折叠的 条评论
为什么被折叠?



