インタフェース設計の原則を学ぶ

2147 ワード

package com.mode;
/*
          。    ,              ,
                            。
     ,           3                  。
 
                 ,       :
 	1.     ,      。
 	2.           ,              ,
 	              。                ,
 	             。
 	3.    ,      。                 。
 */
interface I1 {
	public void method1();
}
interface I2 {
	public void method2();
	public void method3();
}
interface I3 {
	public void method4();
	public void method5();
}
class A {
	public void depend1(I1 i) {
		i.method1();
	}
	public void depend2(I2 i) {
		i.method2();
	}
	public void depend3(I2 i) {
		i.method3();
	}
}
class B implements I1, I2 {
	public void method1() {
		System.out.println(" B    I1   1");
	}
	public void method2() {
		System.out.println(" B    I2   2");
	}
	public void method3() {
		System.out.println(" B    I2   3");
	}
}
class C {
	public void depend1(I1 i) {
		i.method1();
	}
	public void depend2(I3 i) {
		i.method4();
	}
	public void depend3(I3 i) {
		i.method5();
	}
}

class D implements I1, I3 {
	public void method1() {
		System.out.println(" D    I1   1");
	}
	public void method4() {
		System.out.println(" D    I3   4");
	}
	public void method5() {
		System.out.println(" D    I3   5");
	}
}
public class Client {
	public static void main(String[] args) {
		A a = new A();
		a.depend1(new B());
		a.depend2(new B());
		a.depend3(new B());

		C c = new C();
		c.depend1(new D());
		c.depend2(new D());
		c.depend3(new D());
	}
}

原文:http://blog.csdn.net/zhengzhb/article/details/7296921