<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ไอเอินบล๊อก &#187; public interface</title>
	<atom:link href="http://www.iearn.in.th/tag/public-interface/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iearn.in.th</link>
	<description>Just Play and Just Knowledge</description>
	<lastBuildDate>Fri, 05 Aug 2011 15:10:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Basic Java Reflection and Inerface design for plugins</title>
		<link>http://www.iearn.in.th/2008/05/04/basic-java-reflection-and-inerface-design-for-plugins/</link>
		<comments>http://www.iearn.in.th/2008/05/04/basic-java-reflection-and-inerface-design-for-plugins/#comments</comments>
		<pubDate>Sun, 04 May 2008 12:25:47 +0000</pubDate>
		<dc:creator>nolifelover</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[A-Za-z]]></category>
		<category><![CDATA[DoubleSpace]]></category>
		<category><![CDATA[Inerface]]></category>
		<category><![CDATA[public interface]]></category>
		<category><![CDATA[reflection]]></category>
		<category><![CDATA[Reflections]]></category>
		<category><![CDATA[toUpperCase]]></category>

		<guid isPermaLink="false">http://www.jaideawhosting.com/nolifelover/?p=138</guid>
		<description><![CDATA[วันนี้อยากจะเขียนบล๊อกเกี่ยวกับที่ทำให้หมดครับเลยเอาโจทย์ข้อถัดมา มาแก้กันเลยครับ สำหรับโจทย์ข้อนี้จะมาเรียนรู้เรื่อง reflection ของ java กัน หากใครไม่ค่อยมีความรู้แนะนำบล๊อก Reflections on Java Reflection รับลองครับว่าเบื้องต้นทุกคนต้องเข้าใจแน่นอนครับ สำหรับโจทย์ที่ได้รับคือ จะมี folder สำหรับเก็บ plugins ของการ apply เพื่อใช้ร่วมกับข้อความที่เราต้องการโดยหากเราเอาไฟล์ .class ไปวางในโฟลเดอร์นั้น String ที่เราส่งค้าไปจะทำการเปลี่ยนสไตล์ตามที่เราตั้งไว้ใน plugins นั้นครับ โดยในที่นี้จะมี plugins 3 ไฟล์คือ DoubleSpace.class NonWordRemove.class UpperCase.class สำหรับในส่วนของการสร้าง interface สำหรับเพื่อให้ plugins ของเราสามารถเรียกใช้ได้พร้อมกัน package softwareskill; public interface PluginsInterface &#123; String Convert&#40;String senTence&#41;; &#125; ในส่วนของการเขียน plugins ทั้งหมดในการทำการแก้ไขลักษณะของ ตัวอักษรเราจะใช้ การ implement มาจาก [...]]]></description>
			<content:encoded><![CDATA[<p>วันนี้อยากจะเขียนบล๊อกเกี่ยวกับที่ทำให้หมดครับเลยเอาโจทย์ข้อถัดมา มาแก้กันเลยครับ สำหรับโจทย์ข้อนี้จะมาเรียนรู้เรื่อง reflection ของ java กัน หากใครไม่ค่อยมีความรู้แนะนำบล๊อก <a title="Permanent Link to Reflections on Java Reflection" rel="bookmark" href="http://www.devguli.com/blogs/trans/reflections_on_java_reflection/">Reflections on Java Reflection</a> รับลองครับว่าเบื้องต้นทุกคนต้องเข้าใจแน่นอนครับ สำหรับโจทย์ที่ได้รับคือ จะมี folder สำหรับเก็บ plugins ของการ apply เพื่อใช้ร่วมกับข้อความที่เราต้องการโดยหากเราเอาไฟล์ .class ไปวางในโฟลเดอร์นั้น String ที่เราส่งค้าไปจะทำการเปลี่ยนสไตล์ตามที่เราตั้งไว้ใน plugins นั้นครับ โดยในที่นี้จะมี plugins 3 ไฟล์คือ DoubleSpace.class NonWordRemove.class UpperCase.class สำหรับในส่วนของการสร้าง interface สำหรับเพื่อให้ plugins ของเราสามารถเรียกใช้ได้พร้อมกัน<br />
<span id="more-138"></span></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">softwareskill</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> PluginsInterface <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">String</span> Convert<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> senTence<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>ในส่วนของการเขียน plugins ทั้งหมดในการทำการแก้ไขลักษณะของ ตัวอักษรเราจะใช้ การ implement มาจาก interface ที่เราเขียนขึ้น สำหรับโค้ด DoubleSpace เราสามารถเขียนได้ประมาณนี้ครับ</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> DoubleSpace <span style="color: #000000; font-weight: bold;">implements</span> PluginsInterface<span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> Convert<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> senTence<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> senTence.<span style="color: #006633;">replaceAll</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span>, <span style="color: #0000ff;">&quot;  &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>จากโค้ดเมื่อเรา implemens PluginsInterface ผมจะทำการเขียน method convert ใหม่โดยให้เปลี่ยนจาก space bar เป้น double spacebar โดยการใช้ method replaceAll เพื่อทำการแทนค่าที่เจอด้วย space bar ครั้งตามที่เราต้องการ<br />
สำหรับโค้ดของ Uppercase จะเห็นว่าจะคล้ายๆกัน</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> UpperCase <span style="color: #000000; font-weight: bold;">implements</span> PluginsInterface<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> Convert<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> senTence<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> senTence.<span style="color: #006633;">toUpperCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>และส่วนสุดท้ายคือหากไม่ใช่ตัวอักษรหรือตัวเลขให้ทำการตัดทิ้งไปครับ ในที่นี้ผมจะใช้ regular expression ที่ได้ทำการศึกษามาแล้วเมื่อบทความก่อนหน้า</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> NonWordRemove <span style="color: #000000; font-weight: bold;">implements</span> PluginsInterface<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> Convert<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> senTence<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;[^(A-Za-z0-9 ) ]&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span>senTence<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">replaceAll</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>สำหรับในส่วนของการนำไปใช้ก็จะเป็นโค้ดประมาณนี้นะครับโดยจะต้องมีการอ้าง path ที่ได้ทำการเก็บไฟล์ของ .class ที่ได้ผ่านการ compile มาแล้วครับ เพื่อจะนำ class ที่ได้ทั้งหมดมาใช้ครับซึ่งจะได้โค้ดประมาณนี้ครับ</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Reflection <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> CLASSPATH<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;/Users/mLri/NetBeansProjects/Softwareskill/build/classes/softwareskill/plugins&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        Reflection reflection <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Reflection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">String</span> output <span style="color: #339933;">=</span> reflection.<span style="color: #006633;">applyAllPlugins</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;I love you G'meay,,,,,&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>output<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> applyAllPlugins<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> input<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> plugIns <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">getAllpluginClass</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>i
&nbsp;
&nbsp;
ก้เป็นอันว่าเรียบร้อยครับสำหรับการทำโจทย์ในข้อนี้แต่หรับการ desiเื อาจะยังไม่ดีเท่าไรนะครับ หากใครมีอะไรแนะนำสามารที่จะแนะนำได้เลยนะครับ ขอบคุณครับ สามารถดูเรื่อง <span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;http://www.jaideawhosting.com/nolifelover/?p=126&quot;</span><span style="color: #339933;">&gt;</span>regular expression <span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;</span></pre></div></div>


<p class="sayac_bilgi">48 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iearn.in.th/2008/05/04/basic-java-reflection-and-inerface-design-for-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

