zoukankan      html  css  js  c++  java
  • 设计模式之Builder建造者模式 代码初见

    public class EmployeeBuilder
    {
        private int id = 1;
        private string firstname = "first";
        private string lastname = "last";
        private DateTime birthdate = DateTime.Today;
        private string street = "street";
    
        public Employee Build()
        {
            return new Employee(id, firstname, lastname, birthdate, street);
        }
    
        public EmployeeBuilder WithFirstName(string firstname)
        {
            this.firstname = firstname;
            return this;
        }
    
        public EmployeeBuilder WithLastName(string lastname)
        {
            this.lastname = lastname;
            return this;
        }
    
        public EmployeeBuilder WithBirthDate(DateTime birthdate)
        {
            this.birthdate = birthdate;
            return this;
        }
    
        public EmployeeBuilder WithStreet(string street)
        {
            this.street = street;
            return this;
        }
    
        public static implicit operator Employee(EmployeeBuilder instance)
        {
            return instance.Build();
        }
    }
    

    测试

    
    public class EmployeeTest
    {
    
        [Test]
        public void GetFullNameReturnsCombination()
        {
            // Arrange
            Employee emp = new EmployeeBuilder().WithFirstName("Kenneth")
                                                .WithLastName("Truyers");
    
            // Act
            string fullname = emp.getFullName();
    
            // Assert
            Assert.That(fullname, Is.EqualTo("Kenneth Truyers"));
        }
    
        [Test]
        public void GetAgeReturnsCorrectValue()
        {
            // Arrange
            Employee emp = new EmployeeBuilder().WithBirthDate(new DateTime(1983, 1,1));
    
            // Act
            int age = emp.getAge();
    
            // Assert
            Assert.That(age, Is.EqualTo(DateTime.Today.Year - 1983));
        }
    }
    

    参考


    想要看到更多玮哥的学习笔记、考试复习资料、面试准备资料?想要看到IBM工作时期的技术积累和国外初创公司的经验总结?

    敬请关注:

    玮哥的博客 —— CSDN的传送门

    玮哥的博客 —— 简书的传送门

    玮哥的博客 —— 博客园的传送门

  • 相关阅读:
    web端
    vue 键盘事件keyup/keydoen
    APiCloud
    APiCloud
    对于HTML和XML的理解
    JS 的三种定义变量 var let const
    jQuery
    NodeJS 阻塞/非阻塞
    NodeJs REPL交互式解析器常用命令
    用NodeJS创建一个聊天服务器
  • 原文地址:https://www.cnblogs.com/vigorz/p/10501961.html
Copyright © 2011-2022 走看看