[ジャワ] インターフェースを使用する

そのような行うためのユーザインタフェースとして提起多くの問題があり、, なぜ使用インターフェイス, インタフェースの使用方法,… この記事では、私はそれは、通常、比較的抽象的であるため、可能な限り多少理解できるに答えることができるように願っています=)) また、以下に書かれていると言うことは私の限られた理解の一部である, 私にとって本当に素晴らしい何かが同様であるあなたが補うことができます場合は、トラッキングを読んで.

1. 使用できるインターフェイスオブジェクトを作成するための共同行動

たとえば、常にオフライン. 毎日あなたは被験者の多くを学ぶことを想像してみて, 数学, LY, 化学, ボルン, 英語, ヴァン, 歴史,… 各被験者本や遊び, そのように本当に不便ときに “で構成される” クラスへ. 今、私はあなたに、クラスに来ていることを目標に研究されているもの今日知っている必要はありません方法を提示, すべての科目を収容することができます汎用性のものを使用する. 自身が内のすべての被験者がそのように作られてい 1 汎用性の高いノートブック, 学校ばかり=締めくくっていることを選んだ)).

プログラミングでは、本 (登録) あなたのある汎用性の高いインターフェース. 今すぐトライアルをオフラインで起動する. あなた数学, LY, 化学, ボルン,.. 私は、今述べたように, 各モジュールはクラスです. あなたは本の配列を持っているし、学校にそれを持参する必要があり、我々はどのように我々は普通に見てみてください?

package cachhoc.net.useinterface.method;

class Toan {
	public void mangSachToiTruong() {
		System.out.println("Sach Toan duoc mang toi truong");
	}
}

class Ly {
	public void mangSachToiTruong() {
		System.out.println("Sach Ly nhe");
	}
}

class Hoa {
	public void mangSachToiTruong() {
		System.out.println("Sach Hoa ok");
	}
}

class Sinh {
	public void mangSachToiTruong() {
		System.out.println("Sach Sinh day roi");
	}
}

public class TruongHoc {
	public static void main(String[] args) {
		Object[] sach = { new Toan(), new Ly(), new Hoa(), new Sinh() };
		for (Object s : sach) {
			s.mangSachToiTruong(); // loi roi nhe
		}
	}
}

あなたはコードを試しに行く, あなたが表示されますアレイは、我々はそれを置くために他の方法は、Object配列がなく、メソッドを呼び出すサックス作成することですmangSachToiTruong() ことはできません.

今、インタフェースは、この問題を解決するために私たちを助ける. まず、インターフェイスを作成 図書 方法がある mangSachToiTruong();

package cachhoc.net.useinterface.method;

public interface Sach {
	public void mangSachToiTruong();
}

その後、我々はクラストアンを作成, グラス, フラワー, 生まれ、実行可能ファイルは次のように書籍mangSachToiTruongし、問題が解決されているメソッドを実装します.

package cachhoc.net.useinterface.method;

class Toan implements Sach {
	@Override
	public void mangSachToiTruong() {
		System.out.println("Sach Toan duoc mang toi truong");
	}
}

class Ly implements Sach {
	@Override
	public void mangSachToiTruong() {
		System.out.println("Sach Ly nhe");
	}
}

class Hoa implements Sach {
	@Override
	public void mangSachToiTruong() {
		System.out.println("Sach Hoa ok");
	}
}

class Sinh implements Sach {
	@Override
	public void mangSachToiTruong() {
		System.out.println("Sach Sinh day roi");
	}
}

public class TruongHoc {
	public static void main(String[] args) {
		Sach[] sach = { new Toan(), new Ly(), new Hoa(), new Sinh() };
		for (Sach s : sach) {
			s.mangSachToiTruong();
		}
	}
}

2. データ送信, クラス間のメッセージ

これは、しばしば言われているクラスのデータ交換, インターフェイスを介してメッセージ. このセクションでは、それを学びます. 我々はインターフェイス上で行う場合、この問題がより明確になります, すなわちJFrameのを使用して. しかし、あなたは星なしとうまくインターフェースしない場合は、.

あなたが持っている 2 クラスはGiaoDienとダウンロードです. GiaoDienクラスには、ボタンがあります, クラスでダウンロードするダウンロードのメソッド呼び出しをクリックすると、ファイルをダウンロードする, とダウンロード中, ダウンロードされているどのくらい知って戻ってクラスGiaoDienに取得するためのクラスのダウンロードと. 分かりますか 2 自分自身の次のメソッド.

方法 1 (何歳トウモロコシや使用警棒): ダウンロードダウンロードパーセントを更新するクラスインターフェイスのためのコミュニケーションオブジェクト.

package cachhoc.net.useinterface.senddata;

public class GiaoDien {
	private Download download;

	/**
	 * phuong thuc khoi tao Giao dien, dong thoi khoi tao doi tuong download va
	 * truyen chinh giao dien sang class Download de cap nhat giao dien
	 */
	public GiaoDien() {
		download = new Download(this);
	}

	private void nhanDownload() {
		download.download();
	}

	public void capNhatGiaoDien(int phanTramDownload) {
		System.out.println("class giao dien cap nhat duoc: " + phanTramDownload
				+ "%");
	}

	public static void main(String[] args) {
		GiaoDien giaoDien = new GiaoDien();
		giaoDien.nhanDownload();
	}
}
package cachhoc.net.useinterface.senddata;

public class Download {
	private GiaoDien giaoDien;

	/**
	 * @param giaoDien
	 *            de cap nhat giao dien
	 */
	public Download(GiaoDien giaoDien) {
		this.giaoDien = giaoDien;
	}

	public void download() {
		for (int i = 0; i < 100; i++) {
			System.out.println("Dang download...");
			giaoDien.capNhatGiaoDien(i);
		}
		System.out.println("Ket thuc download");
	}
}

あなたが見てきたように、単純なように更新インタフェースは、我々だけでダウンロードが終了したクラスオブジェクトへのインターフェイスを通過したことを証明した.
しかし、多くの問題は、オブジェクトがgiaoDienに渡されたときに発生, ダウンロードクラスは、それがGiaoDien必要はないあるクラスのメソッドを呼び出すことが許可されている, クラスの呼び出しは、それがここに一人で公衆に及びませ民間ことを呼び出すことができますダウンロードできるようにするために必要な更新されたインタフェースメソッド. それとも私たちはクラスの真ん中にある特定のクラスXを通過する必要があり、クラスが、メソッドのダウンロードは新しいコールをダウンロードして、私たちはX GiaoDienに転送する必要があるとし, Xは、ダウンロードするために送信, このような複雑な… 実際にあなたをよりよく理解することになり、他の多くの制約.

方法 2: 使用できるインターフェイス

私たちは、CapNhatメソッドが含まれて呼ばれるインターフェイスを作成capNhatGiaoDien(); GiaoDien次に、以下のCapNhatを実装しています:

package cachhoc.net.useinterface.senddata;

public interface CapNhat {
	public void capNhatGiaoDien(int giaTri);
}
package cachhoc.net.useinterface.senddata;

public class Download {
	private CapNhat capNhat;

	/**
	 * @param capNhat
	 *            lang nghe su kien download
	 */
	public void addDownloadListener(CapNhat capNhat) {
		this.capNhat = capNhat;
	}

	public void download() {
		for (int i = 0; i < 100; i++) {
			System.out.println("Dang download...");

			/**
			 * Khi goi capNhat.capNhatGiaoDien(i); thi phuong thuc nay se tu
			 * dong duoc goi trong giao dien
			 * */

			capNhat.capNhatGiaoDien(i);
		}
		System.out.println("Ket thuc download");
	}
}
package cachhoc.net.useinterface.senddata;

public class GiaoDien implements CapNhat {
	private Download download;

	/**
	 * phuong thuc khoi tao Giao dien, dong thoi dat lang nghe su kien download
	 */
	public GiaoDien() {
		download = new Download();

		/** dat lang nghe su kien download */
		download.addDownloadListener(this);
	}

	private void nhanDownload() {
		download.download();
	}

	/**
	 * Tu dong duoc goi trong qua trinh download thong qua interface CapNhap
	 */
	@Override
	public void capNhatGiaoDien(int giaTri) {
		System.out.println("class giao dien cap nhat duoc: " + giaTri + "%");
	}

	public static void main(String[] args) {
		GiaoDien giaoDien = new GiaoDien();
		giaoDien.nhanDownload();
	}
}

あなたは道ていることがわかります 2 これは古典的な方法の欠点を克服 1. クラスは、テレビ視聴者だけで一つのインターフェースGiaoDien CapNhatをダウンロードする必要はありません, そのための方法, 非薬物GiaoDienの計算 “暴露” またはダウンロードと呼ばれることがある. あなたが特定のクラスXに合格した場合は、新しい実装がダウンロード中にインターフェイスを更新されたオブジェクトGiaoDien中間クラスを通過する必要はありませんダウンロード. または多くのインターフェイスは、ダウンロード中に更新する必要があるとし、それがどのようにのように無関心である 1 あなたがダウンロードするためのインタフェースのすべてのクラスを渡す必要があるため、より困難であろう…

上にある 2 彼らは最も目に見える使用Interfaceアプリケーション. 私たちは、インターフェイスを使用する方法を学ぶことは、プロセスであなたのために役立つことを願って.

のソース記事 cachhoc.net