�g�b�v�y�[�W - srMVUnit.pas
Java �� Observable �� Observer �� Delphi�ɈڐA���� TObservable �� TObserver �N���X�ł��B
mv100.zip (�T���v���v���O�������܂܂�Ă��܂�)
������ Sun �� JavaTM 2 Platform, Standard Edition, 1.4.0 API �d�l ����q���Ă��܂��B
TObservable �N���X�̃��\�b�h�ꗗ�ł��BJava �̃I���W�i���FObservable
���\�b�h | �X�R�[�v | ���� |
AddObserver(AObserver: TObserver) | public | �I�u�W�F�N�g�̃I�u�U�[�o�Z�b�g�ɃI�u�U�[�o��lj����܂��B |
DeleteObserver(AObserver: TObserver) | public | �I�u�W�F�N�g�̃I�u�U�[�o�Z�b�g����I�u�U�[�o���폜���܂��B |
NotifyObservers | public | �I�u�W�F�N�g���AHasChanged ���\�b�h�Ɏ������悤�ɕύX����Ă����ꍇ�A���̂��ׂẴI�u�U�[�o�ɂ��̂��Ƃ�ʒm���A���� ClearChanged ���\�b�h���Ăяo���āA���̃I�u�W�F�N�g�����͂�ύX���ꂽ��ԂłȂ����Ƃ������܂��B |
NotifyObservers(AArg: TObject) | public | �I�u�W�F�N�g���AHasChanged ���\�b�h�Ɏ������悤�ɕύX����Ă����ꍇ�A���̂��ׂẴI�u�U�[�o�ɂ��̂��Ƃ�ʒm���A���� ClearChanged ���\�b�h���Ăяo���āA���̃I�u�W�F�N�g�����͂�ύX���ꂽ��ԂłȂ����Ƃ������܂��B |
DeleteObservers | public | �I�u�U�[�o���X�g���������܂��B |
SetChanged | protected | Observable �I�u�W�F�N�g��ύX���ꂽ���̂Ƃ��ă}�[�L���O���܂��B |
ClearChanged | protected | �I�u�W�F�N�g�����͂�ύX���ꂽ��Ԃł͂Ȃ����ƁA���Ȃ킿�A�ŐV�̕ύX�����ׂăI�u�U�[�o�ɒʒm���ꂽ���Ƃ������܂��B |
HasChanged | public | �I�u�W�F�N�g���ύX���ꂽ���ǂ����肵�܂��B |
CountObservers | public | Observable �I�u�W�F�N�g�̃I�u�U�[�o�̐���Ԃ��܂��B |
TObserver �̃��\�b�h�ꗗ�ł��BJava �̃I���W�i���FObserver
���\�b�h | �X�R�[�v | ���� |
Update(AObservable:TObservable; AArg:TObject) | public | ��Ď��I�u�W�F�N�g�ɕύX������ƁA���̃��\�b�h���Ăяo����܂��B |
Java �� Observable �� interface �Ƃ��Ē�`����Ă��܂��B
Delphi �ɂ� interface �͂���킯�ł����A����� COM �����̌���d�l�ł���A�Œ�ł� IUnknown ���p�����Ȃ��Ƃ����܂���B�]���āADelphi �� TObserver �� interface �Ƃ��Ē�`���Ă��܂��ƁA�������������N���X�ł͕K�v�������̂� IUnknown �Ő錾����Ă��郁�\�b�h(QueryInterface�C_AddRef�C_Release��3��)���������Ȃ���Ȃ�Ȃ��Ȃ�܂��B�ȑO�͂��̕��@(��̃��\�b�h���`����)�� interface ���g���Ă������Ƃ��������̂ł����A���܂�Ɍ����ڂ������̂Ŏ~�߂܂����B
���̂��߂̕���p������܂��BTObserver �̓r���[�ł�����A�ʏ�� TForm ���̃r�W���A���R���|�[�l���g���ΏۂɂȂ�܂��B������Delphi �͑��d�p���������Ă��܂���̂ŁA���̂܂܂ł� TObserver ��g�ݍ��ނ��Ƃ��o���܂���B�����ŁA�t�H�[�����r���[�N���X���u���L�v���A�r���[�N���X���t�H�[���ɑ��čX�V�ʒm��`���鎖�ʼn������܂��B
�܂��AForm �ɍX�V�p�̃��\�b�h���`���܂��B
TMyForm = class(TForm) private FMyFormListener: TObserverListener; procedure UpdateView(AObservable: TObservable); �c end;
TMyForm �Ɠ��� unit �ɁATObservable ����̍X�V�� TMyForm �ɓ`����N���X���`���܂��B
TObserverListener = class(TObserver) public procedure Update(AObservable:TObservable; AArg:TObject);override; end;
TObserverListener�̎����͒P���ł��B
procedure TObserverListener.Update(AObservable: TObservable); begin MyForm.UpdateView(AObservable as TModel); end;
���͂��������`�Ŏg�p���Ă��܂��B
�܂��AAddObserver ����^�C�~���O�����ł��B�P���ȃA�v���P�[�V�����̏ꍇ�A���̓v���W�F�N�g�\�[�X���� AddObserver ���Ă��܂��B�����ƕ��G�ȏꍇ�A�Ⴆ�� Observer �� Observable �̐������Ԃ���v���Ȃ��悤�ȃA�v���P�[�V�����̏ꍇ�ɂ́ATMyForm ���������g�� AddObserver ���邩�AObserver �� Observable �̐ڑ��W���Ǘ����邽�߂̃N���X��ʓr���܂��B
Listener�N���X�����鎖�̓t�H�[���̍X�V���\�b�h���ĂԂ����Ȃ킯�ŁA���������Ӗ��ł�Listener�N���X�̃C���X�^���X�͂ЂƂ����ɂ��āA���̃N���X�Ƀt�H�[�����̂��̂��X�V���\�b�h�̃|�C���^��o�^����悤�Ȍ`�ł��ǂ���������܂���B
�r���[�͎��������f������֘A�t�����폜���ꂽ�^�C�~���O��m�鎖���o���܂���B�֘A�t������Ă��Ȃ����ɋ��ʂ�\���������悤�ȏꍇ�ɂ͂��̃^�C�~���O��m�肽���Ȃ�܂��B����� TObserver �̃C�x���g�Ƃ��Ď������鎖���o���܂��B
�Ƃɂ������ɂ��悤�Ǝv���ΐF�X�Əo���܂����A���������v���~�e�B�u�ȃN���X�͒P���ȕ����g���Ղ��̂ŁA����Ƃ���Εʂ��̂Ƃ��č�邱�ƂɂȂ�Ǝv���܂��B
�g�b�v�y�[�W - srMVUnit.pas