java23種設計模式中最常用的9種 
1 Factory Pattern(工廠模式)   上榜理由:將程序中創建對象的操作,單獨出來處理,大大提高了系統擴展的柔性,接口的抽象化處理給相互依賴的對象創建提供了最好的抽像模式。   
2 Facade Pattern(門面模式)   上榜理由:將表現層和邏輯層隔離,封裝底層的複雜處理,為用戶提供簡單的接口,這樣的例子隨處可見。門面模式很多時候更是一種系統架構的設計,在我所做的項目中,就實現了門面模式的接口,為複雜系統的解耦提供了最好的解決方案。   
3 Command Pattern(命令模式)   上榜理由:將請求封裝為對象,從而將命令的執行和責任分開。通常在隊列中等待命令,這和現實多麼的相似呀。如果你喜歡發號施令,請考慮你的ICommond吧。   

milly20423 發表在 痞客邦 留言(0) 人氣()

https://www.dotblogs.com.tw/joysdw12/archive/2013/03/13/96531.aspx

milly20423 發表在 痞客邦 留言(0) 人氣()

https://study.qqcf.com/web/230/24589.htm

milly20423 發表在 痞客邦 留言(0) 人氣()

理解Android系統的進程間通信原理(一)----RPC中的代理模式 
Android系統中的進程間通信是通過一個輕量級的RPC(Remote Procedure Call遠程進程調用)和AIDL (Android Interface Definination Language)規範來生成兩個進程之間可以相互訪問的代碼。其中RPC是以接口方式來實現,客戶端與被調用實現之間是通過代理模式來實現的,這些又是以JAVA的RMI和代理模式為理論基礎的,若要靈活掌握這個輕量級的解決方案,有必要重新理順這些基礎知識的,這裡我們先了解代理模式的相關基礎, 
有關代理模式的知識,可以用下面這個思維導圖來表示: 這里以一個代碼實例來說明實際運用: 1、抽像類Role代碼 


Java代碼  收藏代碼



  1.  package  com.magc.proxy;  

  2. 2  

  3.  /** 

  4. 4 * @author magc 

  5. 5 *代理角色和真實角色的共同抽像類 

  6. 6 */  

  7.  public  abstract  class  Role {  

  8. 8  

  9.  //作為代理角色和真實角色的共同接口,方便代理角色對外代替真實角色來提供服務  

  10. 10  public  abstract  void  service(String user_id);  

  11. 11  

  12. 12  }  

  13.   

  14. 、真實角色類RealRole代碼  

  15.   

  16.  package  com.magc.proxy;  

  17. 2  

  18.  /** 

  19. 4 * @author magc 

  20. 5 * 真實角色類 

  21. 6 * 對外是不可訪問 

  22. 7 * 

  23. 8 */  

  24.  public  class  RealRole  extends  Role {  

  25. 10  

  26. 11  /* (non-Javadoc) 

  27. 12 * @see com.magc.proxy.Role#service() 

  28. 13 * 提供服務 

  29. 14 */  

  30. 15  @Override  

  31. 16  public  void  service(String user_id) {  

  32. 17  System.out.println( "真實角色為你服務……" );  

  33. 18  }  

  34. 19  //驗證用戶身份  

  35. 20  public  boolean  CheckUser(String user_id)  

  36. 21  {  

  37. 22  return  true ;  

  38. 23  }  

  39. 24  

  40. 25  }  



3、代理類ProxyRole代碼: 


Java代碼  收藏代碼



  1.  package  com.magc.proxy;  

  2. 2  

  3.  /** 

  4. 4 * @author magc 

  5. 5 * 代理角色類 

  6. 6 * 對客戶端開發其接口 

  7. 7 * 內部可以直接引用真實角色實例,將客戶端的請求轉給真實角色實例 

  8. 8 * 對轉發請求的前或者後面可以增加一些額外操作 

  9. 9 */  

  10. 10  public  class  ProxyRole  extends  Role {  

  11. 11  private  RealRole realrole =  null ;  

  12. 12  

  13. 13  /* (non-Javadoc) 

  14. 14 * @see com.magc.proxy.Role#service() 

  15. 15 */  

  16. 16  @Override  

  17. 17  public  void  service(String user_id) {  

  18. 18  System.out.println( "代理角色為你服務……" );  

  19. 19  //需要時才去創建真實角色實例  

  20. 20  realrole =  new  RealRole();  

  21. 21  //增加額外操作:驗證身份  

  22. 22  System.out.println( "驗證身份……" );  

  23. 23  if (!realrole.CheckUser(user_id))  

  24. 24  return ;  

  25. 25  System.out.println( "去找真實角色實例幫忙處理事務……" );  

  26. 26  realrole.service( "magc" );  

  27. 27  

  28. 28  System.out.println( "謝謝光臨……" );  

  29. 29  }  

  30. 30  

  31. 31  }  



4、測試類RoleTest類代碼 


Java代碼  收藏代碼



  1.  package  com.magc.proxy;  

  2. 2  

  3.  /** 

  4. 4 * @author magc 

  5. 5 * 代理模式測試類 

  6. 6 * 作為客戶端去請求調用代理類的接口。 

  7. 7 * 客戶端只能訪問代理類,而不能訪問真實角色類 

  8. 8 */  

  9.  public  class  ProxyTest {  

  10. 10  

  11. 11  /** 

  12. 12 * @param args 

  13. 13 */  

  14. 14  public  static  void  main(String[] args) {  

  15. 15  

  16. 16  ProxyRole proxy =  new  ProxyRole();  

  17. 17  proxy.service( "magc" );  

  18. 18  }  

  19. 19  

  20. 20  }  


出自:https://guojianhui0906.iteye.com/blog/1172008



milly20423 發表在 痞客邦 留言(0) 人氣()


  Singleton  (獨身模式或叫單例模式):確保一個類只有一個實例,並提供對該實例的全局訪問。
I. 單一職責原則
1. 簡介
單一職責原則(Single Responsibility Principle,SRP)其定義為:應該且僅有一個原因引起類別的變更。假設我們設計一個業務角色存取控制的模型,傳統上我們將增加用戶、用戶管理等功能都寫入同一個介面中,如圖1-1。這樣的設計方式會一團糟,不易於維護。我們應該把用戶的屬性與行為分開,將用戶資訊抽取成一個業務物件(Business Object,BO),把行為抽取成業務邏輯(Business Logic,Biz),按照這個思路就可以將類別圖修正為圖1-2。利用介面導向就可以依需求全部實做,或是只當其中單一功能,UserInfo要獲得用戶資訊,就當作IUserBO的實做類別,若希望能操作用戶行為,就當作IUserBiz的實做類別及可。


圖 1-1 傳統用戶資訊維護類別圖

圖 1-2 職責劃分後的類別圖

2. 單一職責原則的好處
單一職責原則提出了一個程式設計的標準,用“職責”或“變化原因”來衡量介面或類別設計是否優良,但是這些都是不可度量的,會因專案而異,因環境而異。單一職責原則好處如下:
 類別的複雜度降低:實現什麼職責都有清晰明確的定義。
 可讀性提升:複雜度降低可提升可讀性。
 可維護性提升:複雜度降低易於維護。
 變更引起的風險降低:修改介面只會影響相應有實做的類別,降低改錯風險。

3. 實踐原則
對於介面,很容易就可以做到單一職責。但是對於類別實做就得多方面考慮,生搬硬套單一職責類別可能會造成類別數量劇增,過度細分則會增加系統維護的複雜性,因此可以靈活運用。單一職責也適用於方法,一個方法盡可能只做一件事情,譬如定義一個修改用戶密碼方法,就別把此方法合併到修改用戶資訊方法中,簡而言之,單一職責方法清晰明確,可以避免別人還要猜測方法的邏輯,維護較為容易。對於單一職責原則,建議為介面一定要做到單一職責原則,類別的設計則盡量做到只有一個原因引起的變化,方法則盡可能只做一件事情

milly20423 發表在 痞客邦 留言(0) 人氣()

clear-default.jpg
  
相信大家初玩 Android 手機都會遇過同樣的問題,就是不知道如何解除程式的預設值,其實解除的方法頗為間接,是 Android 系統其中一個幾唔 User Friendly 的地方,所以新手會很難發現有關的功能。
解除預設值的步驟如下:

開啟【設定】程式
點選【應用程式】
點選【管理應用程式】
點選被設定為預設的程式
進入資訊頁面後,拉下就會發現【清除預設值】的按鈕(右圖)
只要按一下,便再次出現完成操作需使用的程式列表(左圖)

milly20423 發表在 痞客邦 留言(0) 人氣()

Android按鈕狀態(Button State)
 
在Android中,drawable widget有很多種state,透過 xml 的 <selector>,也就是定義 StateList Drawable,能夠讓Android針對drawable(例如Button)的狀態,選擇要顯示的圖片。
本文會
  • 舉例

  • 列出state列表


  •  

    例子

    舉例來說,我想要一組這樣的按鈕
                     


    分為上(btnUp)和下(btnDn)兩個按鈕,有兩個功能:

  • 提示使用者目前位置(上或下)

  • 切換上下頁



  • 按鈕在平時(白色),按下時(邊框黃色),以及按下後(黃色)的圖各自不同。
    因此,對任一個按鈕來說,需要有三個state:正常,按下,選擇(按下後)。
    在Android的xml中,需要用<selector>配合<item>呈現三種state,對應的xml tag是

    • 按下 - state_pressed

    • 選擇 - state_selected

    • 正常 (不用特別定義)



    !注意! Android會根據item的state一個一個往下找,一找到適合的state,便使用此state的drawable作顯示,因此<item>的順序非常重要。全部state定義可以在Developer Guide : StateList找到。例子的button state定義放在drawable/button_up.xml:
    button_up.xml
    <?xml version="1.0" encoding="utf-8"?><selectorxmlns:android="https://schemas.android.com/apk/res/android"><itemandroid:state_pressed="true"android:drawable="@drawable/btn_up_pressed"/><itemandroid:state_selected="true"android:drawable="@drawable/btn_up_selected"/><itemandroid:drawable="@drawable/btn_up"/></selector>

    button_dn.xml和buttun_up.xml一模一樣,只是將drawable改成btn_dn_xxx。
    在activity中加入這組button:
    main_activity.xml 
    <LinearLayoutandroid:id="@+id/btn_layout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:orientation="vertical"><Buttonandroid:id="@+id/btn_up"android:layout_width="80dp"android:layout_height="220dp"android:background="@drawable/situation_button_up"/><Viewandroid:layout_width="match_parent"android:layout_height="5dp"/><Buttonandroid:id="@+id/btn_dn"android:layout_width="80dp"android:layout_height="220dp"android:background="@drawable/situation_button_dn"/></LinearLayout>

    使用這個button的java code:
    MainActivity.java 
    publicclassMainActivityextendsActivity{@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
    setContentView
    (R.layout.main_activity);finalButton btnUp =(Button) findViewById(R.id.btn_up);finalButton btnDn =(Button) findViewById(R.id.btn_dn);

    btnUp
    .setSelected(true);
    btnUp
    .setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View v){
    btnUp
    .setSelected(true);
    btnDn
    .setSelected(false);// Do something}});
    btnDn
    .setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View v){
    btnUp
    .setSelected(false);
    btnDn
    .setSelected(true);// Do something}});}}


    State列表



    Android Object State描述

    android:state_pressed
    物件被按下時


    android:state_focused
    物件由軌跡球或D-pad選取時


    android:state_hovered
    物件由指標覆蓋時


    android:state_selected
    物件被選取時


    android:state_checkable
    物件是checkable時(註1)


    android:state_checked
    物件被點選時


    android:state_enabled
    物件能夠接收touch/click event時


    android:state_activated
    (API11以上)物件被持續選擇時
    (例如highlight選上的list item)


    android:state_window_focused
    當物件所屬的application在前景時




    (註1) 只有當這個物件能在checkable和non-checkable之間切換時才有效

    milly20423 發表在 痞客邦 留言(0) 人氣()


    Step 1: Right click on your project at Package explorer(left side in eclipse)
    Step 2: goto Android.

    Step 3: In Library section Add Library...(google-play-services_lib)
    see below buttes



    • Copy the library project at


    <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/



    • to the location where you maintain your Android app projects. If you are using Eclipse, import the library project into your workspace. Click File > Import, select Android > Existing Android Code into Workspace, and browse to the copy of the library project to import it.

    • Click Here For more.



    Step 4: Click Apply
    Step 5: Click ok
    Step 6: Refresh you app from package Explorer.
    Step 7: you will see error is gone.

    milly20423 發表在 痞客邦 留言(0) 人氣()


    How to fix Android SDK Content Loader stuck at 0% in Eclipse
    Posted on April 23, 2013 3 Comments

    milly20423 發表在 痞客邦 留言(0) 人氣()

    我在創業前曾經在職場工作八年,曾有一位主管在十幾年前,當大直重劃區還是荒煙漫草時就和老婆一起買了一間小套房。十幾年來,他們平均每兩、三年就換一次房子,把原來的房子賣掉,越換越大,在兩年前他們正式搬離大直重劃區時的最後一間房子,是一間七十幾坪的豪宅,外加兩個平面車位。他以每坪 110 萬賣掉後,搬到內湖某個他看好的重劃區,一樓的新成屋,光院子就比客廳和餐廳加起來還要大。他說,等內湖住個幾年,他和老婆就要搬到風和日麗的台中退休定居。
    每次聊起他的換屋史,他總是鼓勵我們存錢買房子,從小坪數開始,慢慢換大,並跟我們分享他的經驗。一開始我很納悶:如果我買了一個房子,坪數 20 坪,我買的單價是 30 萬,在不考慮車位的情況下,三年後,行情漲到了 36 萬。就算我賣掉房子賺了 100 萬(扣掉稅費),除非我要考慮其他比較便宜的區域,不然,如果我想買同一個區域,行情也差不多是 35~36 萬,我到底賺到什麼?(買 30 萬,賣 36 萬,再接著買進 36 萬…如果這是同一支股票的操作,應該是下錯單吧?哈!)
    我把這個問題問我的前主管,他問我:「如果你用每坪 30 萬買了 20 坪的房子,貸款抓 8 成,你付了多少的頭期款?」

    milly20423 發表在 痞客邦 留言(0) 人氣()

    如何申請房屋增貸或二胎?【11個常見問題】
    問題一】增貸和二胎如何申請,增貸和二胎各是什麼?
    【答:】 
    洪慧純指出,所謂房屋貸款增貸,是指房貸戶以住宅申辦房貸一段時間、清償部分本金之後,再次申請房貸,貸款額度大約是已經還給銀行的房貸本金,例如3年前,小陳將房子向銀行申請房貸800萬元,3年內還了80萬元的本金,因為要籌措子女的留學基金,需要一筆資金,決定再向銀行申請貸款,此時,如果住家的情況良好、小陳在這3年內也都按時繳交房貸,即可選擇向銀行申請增貸,將已經償還的80萬元借貸出來。 
    而所謂的二胎,簡單來說,指的就是用同一間房屋設定第二順位的抵押權,例如小黑有一間在內湖區的房子,為了要申請到更多貸款,小黑把這間房屋先和A銀行申請房屋貸款,另外再拿同一間房子,再向B銀行申請一筆房屋貸款,在這樣的情況下,A銀行算是第一順位抵押權、B銀行則為二順位抵押權。

    milly20423 發表在 痞客邦 留言(0) 人氣()

    一、規律作息,改善失眠:
    自律神經失調會引發失眠,失眠也會繼續惡化自律神經的失衡。
     
    二、有氧運動,接觸陽光:

    milly20423 發表在 痞客邦 留言(0) 人氣()

    1 2
    Blog Stats
    ⚠️

    成人內容提醒

    本部落格內容僅限年滿十八歲者瀏覽。
    若您未滿十八歲,請立即離開。

    已滿十八歲者,亦請勿將內容提供給未成年人士。