美文网首页
生成器模式

生成器模式

作者: 指间_璇律 | 来源:发表于2015-07-26 20:06 被阅读54次

本质:分离构建算法和部件构造

场景:模拟学分评级系统,评分为:必修课,选修课,实践课,最终评分为所有课程均分;

class Program

{

///

/// 课程类

///

public class Course

{

private IDictionary _courses = new Dictionary();

public IDictionary Courses

{

get { return _courses; }

}

public void Select(string courseName, decimal score)

{

_courses.Add(courseName, score);

}

public int CourseCount()

{

return _courses.Count;

}

}

///

/// 接口 -  定义过程

///

public interface Builder

{

void GetRequiredScore();  //必修课成绩

void GetEletiveScore();      //选修课成绩

void GetPracticeScore();    //实践课成绩

decimal GetAveScore();     //获取总成绩

}

///

/// 本科生

///

public class UndergraduateBuilder : Builder

{

private Course _courses = new Course();

public void GetRequiredScore()

{

_courses.Select("语文", 85);

_courses.Select("数学", 95);

_courses.Select("英语", 90);

}

public void GetEletiveScore()

{

_courses.Select("物理", 87);

_courses.Select("化学", 80);

}

public void GetPracticeScore()

{

_courses.Select("体育", 95);

}

public decimal GetAveScore()

{

decimal sum = 0;

foreach (KeyValuePair kvp in _courses.Courses)

{

Console.WriteLine(kvp.Key + " " + kvp.Value);

sum += kvp.Value;

}

return sum / _courses.CourseCount();

}

}

///

/// 研究生

///

public class GraduateBuilder : Builder

{

private Course _courses = new Course();

public void GetRequiredScore()

{

_courses.Select("高等数学", 75);

_courses.Select("英语六级", 350);

}

public void GetEletiveScore()

{

_courses.Select("操作系统", 87);

}

public void GetPracticeScore()

{

_courses.Select("体育", 80);

}

public decimal GetAveScore()

{

decimal sum = 0;

foreach (KeyValuePair kvp in _courses.Courses)

{

Console.WriteLine(kvp.Key + " " + kvp.Value);

sum += kvp.Value;

}

return sum / _courses.CourseCount();

}

}

public static class ScoreManager

{

public static decimal GetAllScore(Builder builder)

{

builder.GetRequiredScore();

builder.GetEletiveScore();

builder.GetPracticeScore();

return builder.GetAveScore();

}

}

static void Main(string[] args)

{

decimal score = ScoreManager.GetAllScore(new UndergraduateBuilder());

Console.WriteLine("总评:" + score);

Console.ReadKey();

}

}

相关文章

  • 生成器模式(Builder Pattern)

    生成器模式:用生成器模式封装一个产品的构造过程,并允许按步骤构造 生成器模式又称为建造者模式,是创建性模式中的一种...

  • 设计模式--生成器(建造者)

    生成器模式(Builder) 生成器模式最初的定义出现于《设计模式》(Addison-Wesley,1994) 生...

  • 生成器模式(Builder Pattern)

    1.生成器模式概念 在《Head First Design Patterns》文中是这么介绍生成器模式的,“封装一...

  • 生成器模式

    生成器模式是iOS设计模式中比较简单的一种模式,也经常拿来和抽象工厂作对比。首先我们说下什么事生成器模式。该模式由...

  • iOS设计模式-生成器模式

    何为生成器模式? 生成器模式:将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现。 生成器模...

  • 创建型模式4-生成器模式

    创建型模式4-生成器模式 生成器模式(builder) 意图 将一个复杂对象的构建与它的的表示分离,使得同样的构建...

  • S2. 生成器模式

    生成器模式 生成器模式属于创建型设计模式,根据需要分步创建功能较多的对象。 场景 问题 假设要生产两款不同品牌的笔...

  • 设计模式 - 工具箱

    大纲: OO模式 OO基础 OO原则 Point # OO模式 策略模式 观察者模式 装饰者模式 生成器模式 Bu...

  • 《设计模式之禅》读书笔记-2.5-建造者模式

    2.5 建造者模式 定义: Builder Pattern,也叫生成器模式Separate the constru...

  • 生成器模式 Builder Pattern

    生成器模式(Builder Pattern)又称为建造模式,是 Gang of Four design patte...

网友评论

      本文标题:生成器模式

      本文链接:https://www.haomeiwen.com/subject/mejmqttx.html