OOC keynote: Object Oriented Diversity

E37b4344ef4bfd0fc4826c04971e54fb?s=47 nrs
February 16, 2020

OOC keynote: Object Oriented Diversity

Object Oriented Conference の基調講演です。

# URL
HomePage: https://nrslib.com
Twitter: https://twitter.com/nrslib

E37b4344ef4bfd0fc4826c04971e54fb?s=128

nrs

February 16, 2020
Tweet

Transcript

  1. 3.

    3

  2. 4.

    4

  3. 5.

    5

  4. 6.

    6

  5. 7.

    7

  6. 12.

    12

  7. 25.

    25 public class ProposalSubmitService { private readonly IProposalRepository proposalRepository; public

    ProposalSubmitService(IProposalRepository proposalRepository) { this.proposalRepository = proposalRepository; } public void Handle(ProposalSubmitCommand command) { ... var proposal = new Proposal(command.Title, command.Outline); proposalRepository.Save(proposal); ... } }
  8. 26.

    26 public class ProposalSubmitService { private readonly IProposalRepository proposalRepository; public

    ProposalSubmitService(IProposalRepository proposalRepository) { this.proposalRepository = proposalRepository; } public void Handle(ProposalSubmitCommand command) { ... var proposal = new Proposal(command.Title, command.Outline); proposalRepository.Save(proposal); ... } }
  9. 27.

    27 public class ProposalSubmitService { private readonly IProposalRepository proposalRepository; public

    ProposalSubmitService(IProposalRepository proposalRepository) { this.proposalRepository = proposalRepository; } public void Handle(ProposalSubmitCommand command) { ... var proposal = new Proposal(command.Title, command.Outline); proposalRepository.Save(proposal); ... } }
  10. 28.

    28 public class ProposalSubmitService { private readonly IProposalRepository proposalRepository; public

    ProposalSubmitService(IProposalRepository proposalRepository) { this.proposalRepository = proposalRepository; } public void Handle(ProposalSubmitCommand command) { ... var proposal = new Proposal(command.Title, command.Outline); proposalRepository.Save(proposal); ... } }
  11. 29.

    29 public class ProposalSubmitService { private readonly IProposalRepository proposalRepository; public

    ProposalSubmitService(IProposalRepository proposalRepository) { this.proposalRepository = proposalRepository; } public void Handle(ProposalSubmitCommand command) { ... var proposal = new Proposal(command.Title, command.Outline); proposalRepository.Save(proposal); ... } }
  12. 32.

    32 public class ProposalSubmitService { private readonly IProposalRepository proposalRepository; public

    ProposalSubmitService(IProposalRepository proposalRepository) { this.proposalRepository = proposalRepository; } public void Handle(ProposalSubmitCommand command) { ... var proposal = new Proposal(command.Title, command.Outline); proposalRepository.Save(proposal); ... } }
  13. 33.

    33 public class ProposalSubmitService { private readonly IProposalRepository proposalRepository; public

    ProposalSubmitService(IProposalRepository proposalRepository) { this.proposalRepository = proposalRepository; } public void Handle(ProposalSubmitCommand command) { ... var proposal = new Proposal(command.Title, command.Outline); proposalRepository.Save(proposal); ... } }
  14. 34.

    34 public class ProposalSubmitService { private readonly IProposalRepository proposalRepository; public

    ProposalSubmitService(IProposalRepository proposalRepository) { this.proposalRepository = proposalRepository; } public void Handle(ProposalSubmitCommand command) { ... var proposal = new Proposal(command.Title, command.Outline); proposalRepository.Save(proposal); ... } }
  15. 35.

    35 public void Main(string input) { var repository = CreateRepository(input);

    var proposalSubmitService = new ProposalSubmitService(repository); var command = new ProposalSubmitCommand(); proposalSubmitService.Handle(command); } private IProposalRepository CreateRepository(string input) { switch (input) { case "local" : return new InMemoryProposalRepository(); case "production" : return new SqlProposalRepository(); default: throw new ArgumentOutOfRangeException(); } }
  16. 36.

    36 public void Main(string input) { var repository = CreateRepository(input);

    var proposalSubmitService = new ProposalSubmitService(repository); var command = new ProposalSubmitCommand(); proposalSubmitService.Handle(command); } private IProposalRepository CreateRepository(string input) { switch (input) { case "local" : return new InMemoryProposalRepository(); case "production" : return new SqlProposalRepository(); default: throw new ArgumentOutOfRangeException(); } }
  17. 37.

    37 public void Main(string input) { var repository = CreateRepository(input);

    var proposalSubmitService = new ProposalSubmitService(repository); var command = new ProposalSubmitCommand(); proposalSubmitService.Handle(command); } private IProposalRepository CreateRepository(string input) { switch (input) { case "local" : return new InMemoryProposalRepository(); case "production" : return new SqlProposalRepository(); default: throw new ArgumentOutOfRangeException(); } }
  18. 38.

    38 public void Main(string input) { var repository = CreateRepository(input);

    var proposalSubmitService = new ProposalSubmitService(repository); var command = new ProposalSubmitCommand(); proposalSubmitService.Handle(command); } private IProposalRepository CreateRepository(string input) { switch (input) { case "local" : return new InMemoryProposalRepository(); case "production" : return new SqlProposalRepository(); default: throw new ArgumentOutOfRangeException(); } }
  19. 39.

    39 public void Main(string input) { var repository = CreateRepository(input);

    var proposalSubmitService = new ProposalSubmitService(repository); var command = new ProposalSubmitCommand(); proposalSubmitService.Handle(command); } private IProposalRepository CreateRepository(string input) { switch (input) { case "local" : return new InMemoryProposalRepository(); case "production" : return new SqlProposalRepository(); default: throw new ArgumentOutOfRangeException(); } }
  20. 43.

    43

  21. 46.
  22. 60.

    60

  23. 61.

    61

  24. 62.

    62

  25. 64.

    64

  26. 65.

    65