《模式——工程化实现及扩展》(设计模式C# 版)《原型模式 Prototype》——“自我检验"

2021腾讯云限时秒杀,爆款1核2G云服务器298元/3年!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1062

2021阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址https://www.aliyun.com/minisite/goods

推荐:《模式——工程化实现及扩展》(设计模式C# 版)《访问者模式 Visitor》——“自我检验"参考答案

[转自:《模式——工程化实现及扩展》(设计模式C# 版) http://www.cnblogs.com/callwangxiang/     http://www.cnblogs.com/callwangxiang/archive/2011/05/26/ExerciseA

转自:《模式——工程化实现及扩展》(设计模式C# 版)

http://www.cnblogs.com/callwangxiang/

 


 自我检验

假设由你完成一个企业申报数据序列化的程序,企业信息实体需要按照“计算机信息系统集成资质”1级的要求将满足申报条件的信息序列化。请结合本章介绍的自定义深层复制方式,实现原型对象,并通过单元测试验证。

推荐:《模式——工程化实现及扩展》(设计模式C# 版)《原型模式 Prototype》——“自我检验" 参考答案

[转自:《模式——工程化实现及扩展》(设计模式C# 版) http://www.cnblogs.com/callwangxiang/   http://www.cnblogs.com/callwangxiang/archive/2011/06/02/ExerciseAAP

为了便于示例,对“计算机信息系统集成资质”1级的要求节选如下:

1、 近三年内完成至少两项3000万元以上系统集成项目

2、 具有计算机信息系统集成项目经理人数不少于25名,其中高级项目经理人数不少于8名

 

示例并不对企业整体是否满足申报要求进行审核,仅对满足申报要求的类成员进行筛选。示例涉及的数据结构如下,请改造 Enterprise 类为原型模式类型:

 


[Serializable]
class  Project
{
     ///   <summary>
     ///  结项年份
     ///   </summary>
     public   int  EndYear {  get ;  set ; }

     ///   <summary>
     ///  项目资金规模(万元)
     ///   </summary>
     public   double  Scale {  get ;  set ; }
}

[Flags]
enum  QualificationOptions
{
    Assisstant,       //   助理级
    Professional,     //   专家级
    Senior,           //   高级、资深级
    Principal         //   主任、主管级
}

[Serializable]
class  Certification : IComparable < Certification >
{
     public   string  Name {  get ;  set ; }
     public  QualificationOptions Qualification {  get ;  set ; }

     public   int  CompareTo(Certification other)
    {
         if (other  ==   null )  throw   new  ArgumentNullException( " other " );
         if ( ! string .Equals(other.Name, Name))  throw   new  NotSupportedException();
         if (Qualification  ==  other.Qualification)  return   0 ;
         return  Qualification  >  other.Qualification  ?   1  :  - 1 ;
    }
}

[Serializable]
class  Employee
{
     public   string  Name {  get ;  set ; }
     public  Certification[] Certificates {  get ;  set ; }
}

[Serializable]
class  Enterprise : ISerializable
{
     public   string  Name {  get ;  set ; }
     public  Project[] Projects {  get ;  set ; }
     public  Employee[] Staff {  get ;  set ; }
}

 

推荐:《模式——工程化实现及扩展》(设计模式C# 版)《模板方法模式 Template》——“自我检验" 参考答案

[转自:《模式——工程化实现及扩展》(设计模式C# 版) http://www.cnblogs.com/callwangxiang/     http://www.cnblogs.com/callwangxiang/archive/2011/05/20/ExerciseA

相关推荐