�@

�A��
.NET�Ŏn�߂�f�U�C���p�^�[��

��7�� �f�U�C���p�^�[���̗��Ƃ���

���z�V�X�e��������Ё@���� �f��
�iMicrosoft MVP 2005 - Solutions Architect�j
2005/08/06
Page1 Page2


Back Issue
1
.NET�J���ɂ�����f�U�C���p�^�[���̗L�p��
2
���܂��f�U�C���p�^�[�����g�����߂̐S��
3
���t�@�N�^�����O�ɂ�蓱���o��Strategy�p�^�[��
4
���t�@�N�^�����O�ɂ�蓱���o��Template Method�p�^�[��
5
Composite�p�^�[���𓱂��o�����߂̏���
6
���t�@�N�^�����O�ɂ�蓱���o��Composite�p�^�[��
7
�f�U�C���p�^�[���̗��Ƃ���

�@����܂ł̘A���ł́A�����̎����R�[�h�ɑ΂��ă��t�@�N�^�����O���s���Ă����ƁA���R�Ȑ���s���Ńf�U�C���p�^�[����������Ă������Ƃ�������Ă����B���̂��Ƃ������Ƃ���A�f�U�C���p�^�[���́��L�\�Ȑ݌v�҂݂̂��s�������ȁ��f�U�C���ł͂Ȃ��B�ނ���A���I�u�W�F�N�g�w���Ő݌v����҂����̍œK�ȉ������߂邤���œ��R�̋A���Ƃ��ėp�����镁�ՓI�ȁ��f�U�C���Ȃ̂ł���B�‚܂�A�f�U�C���p�^�[�����o���Ă����Ƃ������Ƃ́A���̉��ɂ��΂₭���B�ł���Ƃ������Ƃ��Ӗ�����B

�@����ł́A�o���Ă������f�U�C���p�^�[�����A���R�C�܂܂ɂ�����ꏊ�ʼn��ɂł��K�p���Ă����Ƃ����ԓx�͐��������낤���B������񂻂�Ȃ킯�͂Ȃ��B�f�U�C���p�^�[����K�p����̂ɂӂ��킵���Ȃ��P�[�X�i���j������̂��B�]���āA���Ƀf�U�C���p�^�[�����g�����Ȃ����߂ɂ́A�������������A�‚܂�u�f�U�C���p�^�[���̗��Ƃ����v������Ēʂ�K�v������̂��B

�@�ŏI��ƂȂ鍡��͂��̃f�U�C���p�^�[���̗��Ƃ����Ƃ��̔������ɂ‚��ĊT������B�����ŏЉ�闎�Ƃ����ɏ\���ɒ��ӂ��Ċ댯��������A���S�ʼn��K�ȃf�U�C���p�^�[���̊��p���ł���悤�ɂȂ��Ă������������B����ł͂�����������ɓ����Ă������B

���f�U�C���p�^�[���͖��\�̐݌v�c�[�����H

�@�u�f�U�C���p�^�[���͌����Ė��\�̐݌v�c�[���Ȃǂł͂Ȃ��B�v

�@���_���炢���ƁA�����������Ƃł���B�����܂ł̘A�ڂł������肢���������Ǝv�����A�f�U�C���p�^�[���́A����R���e�L�X�g�ɂ����āA�ߋ��ɌJ��Ԃ����������������������̂ŁA����Ηǂ��݌v�̂��߂̃m�E�n�E�W�ł���B��̓I�ȃ\�[�X�E�R�[�h��ė��p�”\�ȃR���|�[�l���g�Ƃ�������̓I�Ȃ��̂ł͂Ȃ��A�ǂ��I�u�W�F�N�g�w���̐݌v�̌��{�Ƃ������X�^���X�̂��̂ł���B

�@�܂����Ƀf�U�C���p�^�[�����ǂ��݌v�c�[���ł������Ƃ��Ă��A�c�[���͂����܂œ���ł���A�����ǂ�������g��������Ƃ����ĕK�������ǂ����̂��ł���킯�ł͂Ȃ��B���ׂĂ͓�����g���l�ɍ��E�����̂ł���B

���f�U�C���p�^�[�����S�҂��ׂ肪���Ȃ�ȂƂ́H

�@�f�U�C���p�^�[�����o�����Ă̏��S�҂ɂ悭������X���Ƃ��āA�݌v���ɉ��ł�����ł��f�U�C���p�^�[����K�p���Ă��܂��Ƃ��������Ƃ���������B�f�U�C���p�^�[���͋��͂����A�悭������ɂ͕K������p������悤�ɁA�f�U�C���p�^�[�����g�p����ꍇ�ɂ́A���̕���p�ɂ‚��Ă��l������K�v������B

�@�f�U�C���p�^�[���̎w���������Ɖ�����ɂ͕K���g���[�h�I�t����������B�\�t�g�E�F�A�J���ɂ����邳�܂��܂ȗv���́A����̃p�^�[���͈̔͂ɂ͎��܂肫��Ȃ����낤�B���ꂼ��̃p�^�[���́u�R���e�L�X�g�v��u���v���Ӑ}����Ƃ������������Ɣc�����Ă��Ȃ���΁A���Ȃ����K�؂��Ǝv���Ă����p�^�[�����A���ۂ͂܂������s�K�؂ƂȂ�ꍇ���o�Ă���B

�@����ɂ͎g���ǂ�����ԈႦ���p�^�[�����g�p���邱�ƂŃV�X�e���̕��G���������A�p�^�[�����g�p���Ȃ��ꍇ�����A�������ė������ɂ����݌v�ɂȂ��Ă��܂����Ƃ�������B�f���炵��������g���ǂ�����ԈႦ��ƁA���ʂ̓���ɂ���������Ă��܂��Ƃ������Ƃ��B

�@�ł͎��ۂɈ����݌v�̒����m���Ă����������B�����݌v����̓��t�@�N�^�����O�ł����Ƃ���́u�s�g�Ȃɂ����v���Y���Ă�����̂��B

�@�ȉ��Ƀ��o�[�g�EC�E�}�[�`���ɂ�鏑�Ёw�A�W���C���\�t�g�E�F�A�J���̉��`�x�ɋL�ڂ���Ă���7�‚́u�݌v�̈��L�v���Љ��B�����̂����A�ǂꂩ1�‚ł����̌X����������ꂽ�Ȃ�A���łɂ�ȂɊׂ��Ă���ƍl���Ă��悢���낤�B

���� ����
1.
�d�� �ύX���ɂ����V�X�e���B1�‚̕ύX�ɂ���ăV�X�e���̂ق��̕����ɉe�����y�сA�����̕ύX��]�V�Ȃ�������悤�ȃ\�t�g�E�F�A
2.
���낳 1�‚̕ύX�ɂ���āA���̕ύX�Ƃ͊T�O�I�Ɋ֘A�̂Ȃ����܂ʼn��Ă��܂��悤�ȃ\�t�g�E�F�A
3.
�ڐA���̂Ȃ� �ق��̃V�X�e���ł��ė��p�ł��镔�������W���[���Ƃ��Đ؂藣�����Ƃ�����ȃ\�t�g�E�F�A
4.
�����ɂ��� ���������Ƃ���������A��������Ƃ�����������Ղȃ\�t�g�E�F�A
5.
�s�K�v�ȕ��G�� �{���I�ȈӖ��������Ȃ��\�������Ă���悤�ȃ\�t�g�E�F�A
6.
�s�K�v�ȌJ��Ԃ� �����悤�ȍ\�����J��Ԃ��܂݁A���ۉ����Ă܂Ƃ߂��镔�����܂Ƃ܂��Ă��Ȃ��\�t�g�E�F�A
7.
�s������ �ǂ݂ɂ����A������ɂ����B���̈Ӑ}�����܂��`����Ă��Ȃ��\�t�g�E�F�A
���o�[�g�EC�E�}�[�`���ɂ��7�‚̐݌v�̈��L

����ȂɊׂ�Ȃ����߂̃I�u�W�F�N�g�w���݌v�̌���

�@�f�U�C���p�^�[����K�p����ۂɁA��ȂɊׂ�Ȃ��悤�ɂ��邽�߂ɂ́A�u�I�u�W�F�N�g�w���݌v�̌����v�i�ȍ~�A�݌v�����j���ӎ����Đ݌v��i�߂Ă����Ƃ悢�B�f�U�C���p�^�[����K�p�����ɂ�������炸�A�ǂ��݌v���Ɗ����邱�Ƃ��ł��Ȃ��ꍇ�́A�݌v�����𖳎����Ă��܂��Ă��邱�ƂɋN������ꍇ�������B

�@�݌v�����́A��2���ŏЉ��GRASP�p�^�[����f�U�C���p�^�[���̃r���f�B���O�E�u���b�N�ƂȂ�ł���{�I�ȃu���b�N�ł���B�f�U�C���p�^�[���́A�݌v�����ɂ���ē������Ƃ����Ă��ߌ��ł͂Ȃ��B

�@�݌v�����𗝉����邱�ƂŁA�݌v�̗ǂ������𔻒f��������������Ɛg�ɕt���āA�f�U�C���p�^�[����L���Ɋ��p���Ă��炢�����B�������A�����̐݌v�����͂����܂Ō����ł���A���܂��܂ȃg���[�h�I�t�̌��ʂƂ��āA�����Č����ɔ����Đ݌v���s���悤�ȃP�[�X�����邾�낤�B

�@�ȉ��ɁA�w�A�W���C���\�t�g�E�F�A�J���̉��`�x�ɋL�ڂ���Ă���A�N���X�Ɋւ���5�‚̐݌v�������Љ��B

������ ����
1.
�P��ӔC�̌����iSRP�FSingle Responsibility Principle�j �N���X��ύX���闝�R��1�ˆȏ㑶�݂��Ă͂Ȃ�Ȃ�
2.
�I�[�v���E�N���[�Y�h�̌����iOCP�FOpen-Closed Principle�j �\�t�g�E�F�A�̍\���v�f�i�N���X�A���W���[���A�֐��Ȃǁj�͊g���ɑ΂��ĊJ���Ă��Ȃ���΂Ȃ炸�i�I�[�v���FOpen�j�A�C���ɑ΂��Ă͕‚��Ă��Ȃ���΂Ȃ�Ȃ��i�N���[�Y�h�FClosed�j
3.
���X�R�t�̒u�������iLSP�FLiskov Substituion Principle�j �h���^�͂��̊�{�^�ƒu���”\�łȂ���΂Ȃ�Ȃ�
4.
�ˑ��֌W�t�]�̌����iDIP�FDependency Inversion Principle�j a. ��ʂ̃��W���[���͉��ʂ̃��W���[���Ɉˑ����Ă͂Ȃ�Ȃ��B�ǂ���̃��W���[�����u���ہv�Ɉˑ����ׂ��ł���b. �u���ہv�͎����̏ڍׂɈˑ����Ă͂Ȃ�Ȃ��B�����̏ڍׂ��u���ہv�Ɉˑ����ׂ��ł���
5.
�C���^�[�t�F�C�X�����̌����iISP�FInterface Segregation Principle�j �N���C�A���g�ɁA�N���C�A���g�����p���Ȃ����\�b�h�ւ̈ˑ����������Ă͂Ȃ�Ȃ�
�N���X�Ɋւ���5�‚̐݌v����

1. �P��ӔC�̌����iSRP�FSingle Responsibility Principle�j

�@�N���X�́u�����i�ӔC�j�v���u�ύX���R�v��1�‚ɍi��ׂ��ł���B�N���X�������̖����������Ă���΁A�N���X��ύX���闝�R�������ɂȂ��Ă��܂��B�܂������̖������������N���X�̖����݂͌��Ɍ������Ă��܂��A�Е���ύX����΂��̕ύX�̉e���������ɂ��e�����Ă��܂��B�‚܂�A�����̗��R����1�‚̃N���X��ύX���邱�Ƃ��Ȃ��悤�ɂ��ׂ��ł���B

2. �I�[�v���E�N���[�Y�h�̌����iOCP�FOpen-Closed Principle�j

�@���W���[���̐U�镑�����g���”\�ł���΁A�u�g���ɑ΂��ĊJ����Ă���v�Ƃ�����B�܂��A���W���[���̐U�镑����ύX���Ă��A�����̃\�[�X�E�R�[�h��o�C�i���E�R�[�h���e�����󂯂邱�Ƃ��Ȃ���΁A�u�C���ɑ΂��ĕ‚��Ă���v�Ƃ�����B�������Ă���悤�Ɏv���邱��2�‚̑����́u���ہv�Ɓu�|�����[�t�B�Y���v�Ŏ����ł���B���ۃN���X��C���^�[�t�F�C�X���`���āA���̔h���N���X��V���ɒlj�����΁A�����̃R�[�h���C�����邱�ƂȂ����W���[���̐U�镑�����g���ł���B

�@�ȉ��ɃI�[�v���E�N���[�Y�h�̌����ɏ]���Ă��Ȃ��ꍇ�Ə]���Ă���ꍇ�̐݌v����N���X�}�Ŏ����B���ꂼ��̐݌v�ɂ����āA�V����Server�N���X�̎������g�p����悤�ɂȂ����ꍇ�ɁAClient�N���X�ɋy�ԉe����z�����Ă��炢�����B

�I�[�v���E�N���[�Y�h�̌����ɏ]���Ă��Ȃ��݌v
Client�N���X��Server�N���X�ւ̊֘A������BClient�N���X�͐V����Server�N���X���g���悤�ɂȂ�ƐV���Ȋ֘A���K�v�ɂȂ�B�‚܂�AClient�N���X�̏C�����K�v�ɂȂ�B
�@
�I�[�v���E�N���[�Y�h�̌����ɏ]���Ă���݌v
Client�N���X��IClientInterface�C���^�[�t�F�C�X�����������N���X�ւ̊֘A������BServer�N���X�͂���IClientInterface�C���^�[�t�F�C�X�����������N���X�ł���BIClientInterface�C���^�[�t�F�C�X�����������V����Server�N���X���g���悤�ɂȂ��Ă��AClient�N���X�͊�����IClientInterface�C���^�[�t�F�C�X�����������N���X�ւ̊֘A�𗘗p����̂ŁAClient�N���X�͏C������K�v���Ȃ��B

3. ���X�R�t�̒u�������iLSP�FLiskov Substituion Principle�j

�@�N���C�A���g���g�p���Ă����{�N���X�^��h���N���X�^�ɒu�������Ă�����ɓ��삵�Ȃ��Ă͂Ȃ�Ȃ��B���̂��߂ɂ͔h���N���X�͊�{�N���X�̐U�镑���̑Ó������ێ�����K�v������B��{�N���X�ȉ��̋@�\���������Ȃ��h���N���X�́A��{�N���X�ƒu�������邱�Ƃ͂ł��Ȃ��B

�@�o�[�g�����h�E���C���[�ɂ���Ē񏥂��ꂽ�u�_��ɂ��݌v�iDBC�FDesign By Contract�j�v���g�p����΁A���̌�����K�p�ł���悤�ɂȂ�B�u�_��ɂ��݌v�v�ł́A�N���X�̐U�镑�����A�N���X�����Še���\�b�h�̎��O�����Ǝ�������A�N���X�̕s�Ϗ����ɂ���Ė���������B

�@.NET�ɂ����Č_��ɂ��݌v���s���ɂ́ADebug�N���X�iSystem.Diagnostics���O��ԁj��Assert���\�b�h���g�p���ăA�T�[�V�������s���A�_��ɑ΂���ᔽ�����o������@������B�܂�����1�‚̕��@�Ƃ��ă��j�b�g�e�X�g������B���j�b�g�e�X�g�̓N���X�̐U�镑���Ɋւ���_����L�q���A�`�F�b�N���邽�߂̗L���Ȏ�i�ł���B

4. �ˑ��֌W�t�]�̌����iDIP�FDependency Inversion Principle�j

�@�]���̎葱���^�v���O���~���O�ł́A��ʃ��x���̕��j�����ʃ��x���̎����Ɉˑ����Ă��܂��B����ł́A�����̏ڍׂ�S�����鉺�ʃ��W���[���̕ύX����ʃ��W���[���ɂ܂ŋy�сA���̕ύX��]�V�Ȃ�����Ă��܂��B�I�u�W�F�N�g�w���v���O���~���O�ł́A�u���ہv�𓱓����邱�Ƃł��̈ˑ������t�]������B�‚܂��ʃ��x���Łu���ۃC���^�[�t�F�C�X�v���`���A���ʃ��x���ł��́u���ۃC���^�[�t�F�C�X�v����������B���̂悤�ɂ��ĕ��j�Ǝ����̏ڍׂ��Ƃ��Ɂu���ۃC���^�[�t�F�C�X�v�Ɉˑ�������̂��B

�@��ʃ��x���̃��W���[�����N���C�A���g�Ƃ��čl�����ꍇ�ɁA�]���̕��@�ł́A���ʃ��x���̃��W���[���̃C���^�[�t�F�C�X�ɃN���C�A���g���ˑ����Ă����B�‚܂�A�{���N���C�A���g���󂯂�ׂ��T�[�r�X�̃C���^�[�t�F�C�X�̏��L�҂́A���ʃ��x���̃��W���[���ł���ƍl������B�������A���̌����ɏ]���΃N���C�A���g���ŃT�[�r�X�̃C���^�[�t�F�C�X��錾���邱�ƂɂȂ�A�u�C���^�[�t�F�C�X�̓N���C�A���g�ɑ�����v���ƂɂȂ�B�I�u�W�F�N�g�w���݌v�ł́A���̂悤�ɃC���^�[�t�F�C�X�̏��L�����t�]�����邱�Ƃ��ƂĂ��d�v�ɂȂ��Ă���B

�@�����ɂ‚��Ă͐�́u�I�[�v���E�N���[�Y�h�̌����v�Ŏ������N���X�}���Q�l�ɂȂ�ł��낤�B

5. �C���^�[�t�F�C�X�����̌����iISP�FInterface Segregation Principle�j

�@�N���X�𗘗p����N���C�A���g���������݂���悤�ȏꍇ�ɁA�e�N���C�A���g�ɋ��ʂ̑傫�ȃC���^�[�t�F�C�X�𗘗p�����Ă��܂��ƁA�e�N���C�A���g�͗��p���Ȃ����\�b�h�ɂ܂ňˑ����Ă��܂��B�‚܂�A�e�N���C�A���g�����p���Ă��Ȃ����\�b�h�ɑ΂���ύX�̉e���܂Ŏ󂯂Ă��܂��”\��������Ƃ������Ƃ��B�����Ŋe�N���C�A���g���Ăяo���K�v�̂���T�[�r�X�̒P�ʂŃN���C�A���g���O���[�v�������A���̃O���[�v�ɓ��������C���^�[�t�F�C�X���������邱�ƂŁA�قȂ�T�[�r�X�Ԃł̊֘A���𕪒f���邱�Ƃ��”\�ƂȂ�B

�@�����܂łŁA�N���X�Ɋւ���݌v�������ȒP�ɐ����������A�A�v���P�[�V�����̋K�͂��傫���Ȃ��Ă���ƁA����ɔ�Ⴕ�ăN���X�̐��������Ă�����̂��B�t���[�����[�N���\�z����ۂȂǂ��ǂ��Ⴞ�낤�B�ێ琫���l������΁A�N���X�Ɋւ���݌v�����ȊO�ɂ��A�@�\��̌n�����鉽�炩�̎�i���K�v���B���̂悤�ȏꍇ�ɗL���ƂȂ�̂��A�u�p�b�P�[�W�i.NET�ł͖��O��Ԃ�A�Z���u���ɊY������j�v�ł���B�i���̃y�[�W�֑����j


�@INDEX
�@ .NET�Ŏn�߂�f�U�C���p�^�[��
�@ ��7�� �f�U�C���p�^�[���̗��Ƃ���
  1�D�f�U�C���p�^�[���͖��\�̐݌v�c�[�����H
�@   2�D�ێ琫���l�������p�b�P�[�W�����̎w�j
�@
CfbNXEy[Ww �@�u.NET�Ŏn�߂�f�U�C���p�^�[���v


Insider.NET �t�H�[���� �V���L��
  • ��2��@�Ȍ��ȃR�[�f�B���O�̂��߂� �i2017/7/26�j
    �@�����_���ŋL�q�ł��郁���o�̑����Athrow���Aout�ϐ��A�^�v���ȂǁAC# 7�ɂ͈ȑO�����R�[�h���Ȍ��ɋL�q�ł���悤�ȋ@�\����������Ă���
  • ��1��@Visual Studio Code�f�o�b�O�̊�b�m�� �i2017/7/21�j
    �@Node.js�v���O�������f�o�b�O���Ȃ���AVisual Studio Code�ɓ�������Ă���f�o�b�O�@�\�̊�{�́u�L�v���}�X�^�[���悤
  • ��1��@���ĂȃR�[�f�B���O�̂��߂� �i2017/7/19�j
    �@C# 7�Œlj����ꂽ�V�@�\�̒�����A�u���l���e�����\���̉��P�v�Ɓu���[�J���֐��v���Љ��B�����͕�����₷���R�[�h���L�q����̂Ɏg����
  • Presentation Translator �i2017/7/18�j
    �@Presentation Translator��PowerPoint�p�̃A�h�C���B�v���[���e�[�V�������̎����̕t����A������ł̎��^�����A�X���C�h�̖|����s����
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

���ڂ̃e�[�}

Insider.NET �L�������L���O

�{�� ����