static void Main(string[] args) { try { AbstractStudent student = new StudentVip() { Id = "1001", Name = "tom" }; { //student.Show(); } { student = new BaseStudentDecorator(student); student = new StudentCoreDecorator(student); student = new StudentDesignDecorator(student); student.Show(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); }
static void Main(string[] args) { try { //{ // AbstractStudent student = new StudentVIPInherit() // { // Id = 1234, // Name = "Ivan" // }; // student.Study(); //} //{ // AbstractStudent student = new StudentVIP() // { // Id = 1234, // Name = "Ivan" // }; // // 比起继承,组合跟家灵活 可以为多个类型服务,但是这个调用成本更高一点 // // 因为即关注了 AbstractStudent 类, 又关注了StudentCombination // StudentCombination studentCombination = new StudentCombination(student); // studentCombination.Study(); //} { AbstractStudent student = new StudentFree() { Id = 1234, Name = "Ivan" }; // BaseStudentDecorator baseStudentDecorator = new BaseStudentDecorator(student); // 1. // AbstractStudent baseStudentDecorator = new BaseStudentDecorator(student); //2. student = new BaseStudentDecorator(student); student = new StudentHomeworkDecorator(student); student = new StudentCommentDecorator(student); // 不修改业务类, 可以随意添加功能 装饰器 // 还可以随意调整顺序 student.Study(); } } catch (Exception e) { Console.WriteLine(e.Message); throw; } }
static void Main(string[] args) { try { Console.WriteLine("欢迎来到.net高级班vip课程,今天是设计模式的学习"); AbstractStudent student = new StudentVip() { Id = 381, Name = "秋叶" }; //student.Show(); //int i = 0; //i = 1; //AbstractStudent student2 = new BaseStudentDecorator(student); //student2.Show(); student = new BaseStudentDecorator(student);//覆盖了 //student.Show(); //AbstractStudent student3 = new StudentCoreDecorator(student); //student3.Show(); student = new StudentPayDecorator(student); student = new StudentCoreDecorator(student); student = new StudentFrameworkDecorator(student); student = new StudentProjectDecorator(student); student = new StudentDesignDecorator(student); //student = new StudentPayDecorator(student); student.Show(); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); }