Article View: pl.comp.objects
Article #16902Re: Groovy
From: Seweryn Habdank-Wojewódzki
Date: Wed, 16 May 2007 10:07
Date: Wed, 16 May 2007 10:07
56 lines
3309 bytes
3309 bytes
Witam
Piotr Kobzda wrote:
> to nikt mi z zewnątrz nie popsuje obiektu tak:
>
> MyClass obj = new MyClass();
> obj.myData = null;
Piotrze nie przesadzaj. W C++ tak też się nie da. Pan A.K. zrobił o wiele
więcej. zrobił cos co trudno się robi w Javie. Tak więc to nie jest żadne
potrówanie.
To co napisałeś w C++ też nie przejdzie, dostaniesz w czasie kompilacji
błąd, że próbujesz grzebać w sekcji prywatnej.
> czy tak:
>
> Filed f = MyClass.class.getDeclaredField("myData");
> f.setAccessible(true);
> f.set(obj, null);
A to?
> Nawet jeśli uda mu się to skompilować.
>
> Żadnych PIMPLów, czy jak im tam, nie potrzeba.
PIMPL woją drogą jest dobry (używany nie wprost), jak udostępniasz
interfejs. PIMPL oznacza "Private implementation", tak więc rozszerzając
ideę np. pisząc gettery i settery właśnie robisz pimpla, tylko tego tak nie
nazywasz.
>> PS: Co nie zmianai faktu ze PIMPL to nie jakis antidotum
>> _likwidujace_ bezpieczenstwo.
>> On tylko je pomniejsza.
>
> Tu zakładam, że mówisz o *nie*bezpieczeństwie, inaczej to PIMPL raczej
> odradzać trzeba... ;)
Pamiętaj, że PIMPL to nie tylko bezpieczeństwo.
Zobacz na header, który pokazałem. Zobacz, że ja mogę całą masę rzeczy robić
pod spodem, Ty masz cały czas ten sam header. Mogę dostarczyć Ci
skompilowany kod i nie ma problemu. Twój kod nadal używa starego headeru,
nawet jeśli jak wymieniłem wszystko pod spodem.
Podsumowując. PIMPL służy też do robienia niezależnych ubgrade
poszczególnych części kodu bez konfliktów. Chyba że zmiany są na tyle duże
że dotyczą interfejsu publicznego, ale wtedy nie ma rady.
Pozdrawiam.
--
|\/\/| Seweryn Habdank-Wojewódzki
\/\/
Technical Details
Message-ID:
<f2eku0$501$1@news.vectranet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.gazeta.pl!news.vectranet.pl!not-for-mailReferences:
<f1tdl6$2s4$1@inews.gazeta.pl><f1todc$8s5$1@inews.gazeta.pl> <f1tss8$iq3$1@inews.gazeta.pl> <f1u2qu$1pm$1@inews.gazeta.pl> <1178922714.630317.141500@y80g2000hsf.googlegroups.com> <f22v79$3gu$1@inews.gazeta.pl> <f246sk$b8s$1@news.vectranet.pl> <f24i4s$6pe$1@inews.gazeta.pl> <f24s89$vs3$1@news.vectranet.pl> <f24u05$nnf$1@inews.gazeta.pl> <f24uor$39e$1@news.vectranet.pl> <f2586r$asf$1@inews.gazeta.pl> <f26fc9$iu6$1@news.vectranet.pl> <f287ie$354$1@inews.gazeta.pl> <f298ag$b63$1@news.vectranet.pl> <f29mdl$m5f$1@inews.gazeta.pl> <f2aa6n$cp8$1@news.vectranet.pl> <f2ad64$auv$1@inews.gazeta.pl> <f2afqc$i98$1@news.vectranet.pl> <f2ahqh$6n8$1@inews.gazeta.pl> <f2ara9$dj2$1@inews.gazeta.pl> <f2bnm3$r8g$1@inews.gazeta.pl> <f2eg7i$ga0$1@inews.gazeta.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.gazeta.pl!news.vectranet.pl!not-for-mail From: Seweryn Habdank-Wojewódzki <shw_mail@wp.pl> Newsgroups: pl.comp.objects Subject: Re: Groovy Date: Wed, 16 May 2007 12:07:43 +0200 Organization: VectraNET - http://www.vectranet.pl Lines: 57 Message-ID: <f2eku0$501$1@news.vectranet.pl> References: <f1tdl6$2s4$1@inews.gazeta.pl><f1todc$8s5$1@inews.gazeta.pl> <f1tss8$iq3$1@inews.gazeta.pl> <f1u2qu$1pm$1@inews.gazeta.pl> <1178922714.630317.141500@y80g2000hsf.googlegroups.com> <f22v79$3gu$1@inews.gazeta.pl> <f246sk$b8s$1@news.vectranet.pl> <f24i4s$6pe$1@inews.gazeta.pl> <f24s89$vs3$1@news.vectranet.pl> <f24u05$nnf$1@inews.gazeta.pl> <f24uor$39e$1@news.vectranet.pl> <f2586r$asf$1@inews.gazeta.pl> <f26fc9$iu6$1@news.vectranet.pl> <f287ie$354$1@inews.gazeta.pl> <f298ag$b63$1@news.vectranet.pl> <f29mdl$m5f$1@inews.gazeta.pl> <f2aa6n$cp8$1@news.vectranet.pl> <f2ad64$auv$1@inews.gazeta.pl> <f2afqc$i98$1@news.vectranet.pl> <f2ahqh$6n8$1@inews.gazeta.pl> <f2ara9$dj2$1@inews.gazeta.pl> <f2bnm3$r8g$1@inews.gazeta.pl> <f2eg7i$ga0$1@inews.gazeta.pl> Reply-To: shw_mail@wp.pl NNTP-Posting-Host: 82.139.21.12 Mime-Version: 1.0 X-Trace: news.vectranet.pl 1179309824 5121 82.139.21.12 (16 May 2007 10:03:44 GMT) X-Complaints-To: usenet@news.vectranet.pl NNTP-Posting-Date: Wed, 16 May 2007 10:03:44 +0000 (UTC) User-Agent: KNode/0.10.4 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit