[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: 「Javaオブジェクト設計」




はじめまして佐藤@静岡です

なんとなく感じたことを・・・

On Wed, 11 Nov 1998 12:10:11 +0900
  In <199811110309.MAA08642@xxxxxxxxxx>
    ENDO Yasuyuki <yasuyuki@xxxxxxxxxx> wrote:

> >何でもかんでも interface として抽出して、
> >その interface どうしをまとめてまた interface にします。
> 
> たとえば、String getName() と void setName(String) という
> アクセッサーが複数のクラスで使われている場合、
> 
> public interface IName {
>   public String getName();
>   public void setName(String value);
> }
> 
> という interface として抽出してしまいます。
> 
> これ以外に、getAdress(), setAdress() というアクセッサーが使われていれば、
> 
> public interface IAdress {
>   public String getAdress();
>   public void setAdress(String value);
> }
> 
> として抽出してしまいます。

たとえば
class Person implements IName {
    private String name;
    public String getName() { return name }
    public setName(String name) {this.name = name }
}
というようなINameを実装したclassを定義して
どこかで
IName namedPerson = new Person();
とか
void hogehoge(IName iName) {
    System.out.println(iName.getName());
}
とかして使うぐらいの想像しかできません

INameという役割が必要であれば、(setName(),getName()を持つclassが 1つ
しかなくても)interface INameを定義して、上に書いたように使うかもしれ
ません。

そうではなくて
「アクセッサメソッドの1つ1つについてinterfaceを定義するような」ことは
あまり意味が無いような気がします。

> IName、IAdress 両方を implement する場合、implements IName, IAdress 
> と書いても良いですが、
> 
> public interface INameAdress extends IName, IAdress {}
> 
> というものを書いてしまい、implements INameAdress としてしまいます。

implements IName, IAddressせずに、常にinterface INameAdressを定義する
必要はないのでは?(たまにはあるかもしれないけど)
interface INameAddressみたいのを量産してinterfaceの個数が多くなるは嫌
です(^^;

「Peter Code の Java オブジェクト設計」を読んでみようと思いますが、
この本の筆者は、なぜにそこまでinterfaceをつくりたがるんでしょ?

---------------------------------------------------------------
佐藤 宏輔  / Sato Kosuke
mail-to : cab05340@xxxxxxxxxx