static void Main(string[] args) { try { Console.WriteLine("欢迎来到.net高级班vip课程,今天是设计模式的学习"); { AbstractStudent student = new StudentVip() { Id = 381, Name = "候鸟" }; //RegUser //付费 要预习 student.Study(); Console.WriteLine("****************************************"); //{ // AbstractStudent studentDecorator = new BaseStudentDecorator(); // studentDecorator.Study();// 学习课程,,在学习前加点东西:付费 要预习 //} { //StudentPreviewDecorator studentDecorator = new StudentPreviewDecorator(student); //AbstractStudent studentDecorator = new StudentPreviewDecorator(student);//换成抽象变量 //studentDecorator.Study(); //student = new StudentHomeworkDecorator(student); student = new StudentPreviewDecorator(student);//原有变量 student = new StudentRegDecorator(student); student = new StudentPayDecorator(student); student = new StudentHomeworkDecorator(student); student = new StudentCommentDecorator(student); //student.Study(); //学习之后 巩固练习homework //student = new StudentHomeworkDecorator(student); student.Study(); } } //{ // AbstractStudent student = new StudentFree() // { // Id = 381, // Name = "候鸟" // }; // student.Study(); // Console.WriteLine("****************************************"); // student = new StudentPreviewDecorator(student);//原有变量 // student = new StudentPayDecorator(student); // student.Study(); //} } 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; } }