Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÈçºÎÀí½âÕâ6ÖÖ³£¼ûÉè¼ÆÄ£Ê½£¿
 
×÷Õߣº ØýÃû
  2040  次浏览      28
 2022-1-4
 
±à¼­ÍƼö:
±¾ÎÄ·ÖÏí×÷Õß¶Ô¹¤³§Ä£Ê½¡¢µ¥Àýģʽ¡¢×°ÊÎģʽ¡¢²ßÂÔģʽ¡¢ ´úÀíģʽºÍ¹Û²ìÕßģʽµÄÀí½â£¬½éÉÜÿÖÖģʽµÄÄ£ ʽ½á¹¹¡¢ÓÅȱµã¡¢ÊÊÓó¡¾°¡¢×¢ÒâʵÏÖ¼°´úÂëʵÏÖ¡£ £¬Ï£Íû¶Ô´ó¼ÒµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ51CTO£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

Ò» ǰÑÔ

×î½üÔÚ¸ÄÔìһЩÀúÊ·µÄ´úÂ룬·¢ÏÖÒ»¸öºÜÃ÷ÏÔµÄÌØµã£¬´ó²¿·Ö´úÂëÊǼÇÐðÎÄ£¬°´ÕÕʼþµÄ·¢Õ¹¹ý³Ì½«¹ÊÊÂÆ½ÆÌÖ±ÐðµÄ½²½â³öÀ´¡£

ÕâÖÖ·½Ê½µÄºÃ´¦ÊDZȽϷûºÏÈËÀàµÄ˼άϰ¹ß£¬Ò»ÌõÖ÷Ïß½²µ½µ×£¬´úÂëÔĶÁÆðÀ´Ã»ÓÐÌ«´óÄѶȣ¬Ö»ÒªË³×ÅÌÙ¾ÍÄÜÃþµ½¹Ï£¬µ«ÊÇȱµãÒ²ºÜÃ÷ÏÔ£¬Ò»µ©¹ÊÊÂÏßÖÐÐèÒª²åÈëһЩеÄÔªËØ£¬±ÈÈ磺¼ÓÈëÒ»¸öеÄÈËÎï½ÇÉ«¡¢ÐµÄʱ¼äÏߣ¬¶¼»áÐèÒª´óÁ¿¸ü¸Ä¹ÊÊÂÏßÒÔÅäºÏÕâ¸öÐÂÔªËØµÄÈÚÈ룬ÉõÖÁ¶ÔÔ­ÓÐÎÄÕÂÔì³ÉÆÆ»µÐÔµÄÓ°Ïì¡£

ΪÁ˽â¾öÕâ¸öÎÊÌ⣬ÈËÃÇ×ܽá³öÁ˺ܶàÖÖÎÄÕ½ṹ£¬ÀýÈ磺×Ü-·Ö½á¹¹£¬²¢Áнṹ£¬×Ü-·Ö-×ܽṹµÈµÈ£¬ÓÐÁËÕâЩ½á¹¹£¬ÔÚ¼ÓÈëÐÂÔªËØµÄʱºò£¬ÉõÖÁ²»±Ø¿¼ÂÇÐÂÔªËØÓëÔ­¹ÊÊÂÇé½ÚµÄ¹ØÁªÐÔ£¬Ö±½Óµ¥À­Ò»¸ö·ÖÖ§¹ÊÊÂÏß¶ÀÁ¢È¥½²¾ÍºÃÁË£¬Ö»ÒªÄܹ»ÔÚÕûÌå¹ÊʽáÊøÇ°£¬Óë»ã¾Ûµ½Ö÷Ïß¹ÊʾͿÉÒÔÁË£¨ÊDz»ÊǺÜÏñgit£¿£©¡£

ÔÚÈí¼þ¿ª·¢ÁìÓò£¬Ò²ÓкܶàÕâÑùµÄ·Ç³£ÓÐÓõÄʵ¼ù×ܽᣬÎÒÃdzÆÖ®ÎªÉè¼ÆÄ£Ê½¡£¶ÔÓÚÉè¼ÆÄ£Ê½£¬´ó¼Ò¶¼²»Ä°Éú£¬Ëæ±ãÕÒ¸öÈË£¬¹À¼Æ¶¼Äܽ²³öN¸öÉè¼ÆÄ£Ê½À´£¬µ«ÊdzýÁËÕâЩÉè¼ÆÄ£Ê½µÄ¸ÅÄºÜ¶àÈ˲»ÖªµÀÈçºÎÁé»îÔËÓÃÕâЩÉè¼ÆÄ£Ê½¡£ËùÒÔ½èÕâÆªÎÄÕºʹó¼Ò ¹²Í¬Ñ§Ï°Éè¼ÆÄ£Ê½µÄ˼Ïë¡£

¶þ Àí½âÉè¼ÆÄ£Ê½

ÎÒ¾¡Á¿ÓÃ×îͨË×Ò×¶®µÄʾÀýºÍÓïÑÔÀ´½²ÊöÎÒÀí½âµÄÉè¼ÆÄ£Ê½£¬Ï£ÍûÄܶԴó¼ÒÓÐËù°ïÖú¡£

ÁíÍâÒ²ÎÞÐ辫ͨËùÓеÄÉè¼ÆÄ£Ê½£¬Ö»ÒªÄܹ»ÈÚ»ã¹áͨ³£¼ûµÄÉè¼ÆÄ£Ê½£¬¾ÍÄÜÈÃÄãµÄ´úÂë±äµÃÓÅÑÅ¡£¾ÍÏñ³ÌÒ§½ðÖ»»áÈý°å¸«£¬µ«ÊÇÊìÁ·¶ÈÎÞÈËÄܼ°£¬ÕÕÑùÄܺáÐÐÌìÏ¡£

1 ¹¤³§Ä£Ê½(Factory)

¼òµ¥¹¤³§(Simple Factory)

СÃ÷×·ÃÃ×ÓµÄʱºò£¬ÇëËýºÈÁ˲»ÉÙ¿§·È£¬Ëý°®ºÈ¿¨²¼ÆæÅµ£¬Ã¿´ÎÈ¥¿§·Èµê£¬Ö»Òª¸ú·þÎñԱ˵¡°À´±­¿¨²¼ÆæÅµ¡±¾ÍÐÐÁË£¬ËäÈ»¸÷¼ÒµÄ¿ÚζÓÐЩ²»Í¬£¬µ«ÊDz»¹ÜÊÇÐǰְֻ¹ÊÇCosta£¬¶¼Äܹ»Ìṩ¿¨²¼ÆæÅµÕâÖÖ¿§·È¡£ÕâÀïµÄÐǰְֺÍCosta¾ÍÊÇÉú²ú¿§·ÈµÄ¹¤³§¡£

£¨1£©¼òµ¥¹¤³§Ä£Ê½½á¹¹

¼òµ¥¹¤³§Ä£Ê½°üº¬ÈçϽÇÉ«£º

  • Factory£º¹¤³§½ÇÉ«-¸ºÔðʵÏÖ´´½¨ËùÓÐʵÀýµÄÄÚ²¿Âß¼­.
  • Product£º³éÏó²úÆ·½ÇÉ«-ÊÇËù´´½¨µÄËùÓжÔÏóµÄ¸¸À࣬¸ºÔðÃèÊöËùÓÐʵÀýËù¹²ÓеĹ«¹²½Ó¿Ú¡£
  • ConcreteProduct£º¾ßÌå²úÆ·½ÇÉ«-ÊÇ´´½¨Ä¿±ê£¬ËùÓд´½¨µÄ¶ÔÏ󶼳䵱Õâ¸ö½ÇÉ«µÄij¸ö¾ßÌåÀàµÄʵÀý¡£

½á¹¹Í¼£º

ʱÐòͼ£º

£¨2£©ÓÅȱµã

  • Óŵ㣺¿Í»§ÀàºÍ¹¤³§Àà·Ö¿ª¡£Ïû·ÑÕßÈκÎʱºòÐèҪijÖÖ²úÆ·£¬Ö»ÐèÏò¹¤³§ÇëÇó¼´¿É¡£Ïû·ÑÕßÎÞÐëÐ޸ľͿÉÒÔ½ÓÄÉвúÆ·¡£
  • ȱµã £º Êǵ±²úÆ·ÐÞ¸Äʱ£¬¹¤³§ÀàÒ²Òª×öÏàÓ¦µÄÐ޸ġ£

¹¤³§·½·¨(Factory Method)

ÒÔǰ¾­³£´øÀÏÆÅÈ¥ÓÅÒ¿⣨¼òµ¥¹¤³§£©ÂòÒ·þ£¬¾ÍÄÇô¶à¿îʽ£¬¹äµÄ´ÎÊý¶àÁË£¬Ëý¾Í·³ÁË¡£ºóÀ´ÎҸıä²ßÂÔ£¬´øÀÏÆÅÈ¥¹äÉ̳¡£¨³éÏ󹤳§£©£¬É̳¡ÀïÓи÷Ê½Æ·ÅÆµÄµêÆÌ£¬²»ÓÃÎҹܣ¬Ëý×Ô¼º¾ÍÄܹäÉÏÒ»ÕûÌì¡£

Çø±ðÓÚ¼òµ¥¹¤³§£¬ºËÐŤ³§ÀࣨÉ̳¡£©²»ÔÙ¸ºÔðËùÓвúÆ·µÄ´´½¨£¬¶øÊǽ«¾ßÌå´´½¨µÄ¹¤×÷½»¸ø×ÓÀࣨ·þ×°µê£©È¥×ö£¬³ÉΪһ¸ö³éÏ󹤳§½ÇÉ«£¬½ö¸ºÔð¸ø³ö¾ßÌ幤³§Àà±ØÐëʵÏֵĽӿڣ¨Ãŵ꣩£¬¶ø²»½Ó´¥ÄÄÒ»¸ö²úÆ·ÀàÓ¦µ±±»ÊµÀý»¯ÕâÖÖϸ½Ú¡£

£¨1£©¹¤³§·½·¨Ä£Ê½½á¹¹

¹¤³§·½·¨Ä£Ê½°üº¬ÈçϽÇÉ«£º

  • Product£º³éÏó²úÆ·
  • ConcreteProduct£º¾ßÌå²úÆ·
  • Factory£º³éÏ󹤳§
  • ConcreteFactory£º¾ßÌ幤³§

½á¹¹Í¼£º

ʱÐòͼ£º

¹¤³§Ä£Ê½×ܽá

£¨1£©ÊÊÓó¡¾°

Êä³öµÄ²úÆ·ÊDZê׼Ʒ£¬Ë­À´×ö¶¼¿ÉÒÔ¡£

£¨2£©¾ÙÀý

³£¼ûµÄÊý¾Ý¿âÁ¬½Ó¹¤³§£¬SqlSessionFactory£¬²úÆ·ÊÇÒ»¸öÊý¾Ý¿âÁ¬½Ó£¬ÖÁÓÚÊÇoracleÌṩµÄ£¬»¹ÊÇmysqlÌṩµÄ£¬ÎÒ²¢²»ÐèÒª¹ØÐÄ£¬ÒòΪ¶¼ÄÜÈÃÎÒͨ¹ýsqlÀ´²Ù×÷Êý¾Ý¡£

£¨3£©×¢ÒâÊÂÏî

ÏîÄ¿³õÆÚ£¬Èí¼þ½á¹¹ºÍÐèÇó¶¼Ã»ÓÐÎȶ¨ÏÂÀ´Ê±£¬²»½¨ÒéʹÓôËģʽ£¬ÒòΪÆäÁÓÊÆÒ²ºÜÃ÷ÏÔ£¬Ôö¼ÓÁË´úÂëµÄ¸´ÔÓ¶È£¬Ôö¼ÓÁ˵÷Óòã´Î£¬Ôö¼ÓÁËÄڴ渺µ£¡£ËùÒÔҪעÒâ·ÀֹģʽµÄÀÄÓá£

£¨4£©¼òµ¥ÊµÏÖ

  1. package FactoryMethod;
  2. public class FactoryPattern
  3. {
  4. public static void main(String[] args)
  5. {
  6. Factory factory = new ConcreteFactoryA();
  7. Product product = factory.createProduct();
  8. product.use();
  9. }
  10. }
  11. //³éÏó²úÆ·£ºÌṩÁ˲úÆ·µÄ½Ó¿Ú
  12. interface Product
  13. {
  14. public void use();
  15. }
  16. //¾ßÌå²úÆ·A£ºÊµÏÖ³éÏó²úÆ·ÖеijéÏó·½·¨
  17. class ConcreteProductA implements Product
  18. {
  19. public void use()
  20. {
  21. System. out .println( "¾ßÌå²úÆ·AÏÔʾ..." );
  22. }
  23. }
  24. //¾ßÌå²úÆ·B£ºÊµÏÖ³éÏó²úÆ·ÖеijéÏó·½·¨
  25. class ConcreteProductB implements Product
  26. {
  27. public void use()
  28. {
  29. System. out .println( "¾ßÌå²úÆ·BÏÔʾ..." );
  30. }
  31. }
  32. //³éÏ󹤳§£ºÌṩÁ˳§Æ·µÄÉú³É·½·¨
  33. interface Factory
  34. {
  35. public Product createProduct();
  36. }
  37. //¾ßÌ幤³§A£ºÊµÏÖÁ˳§Æ·µÄÉú³É·½·¨
  38. class ConcreteFactoryA implements AbstractFactory
  39. {
  40. public Product createProduct()
  41. {
  42. System. out .println( "¾ßÌ幤³§AÉú³É-->¾ßÌå²úÆ·A." );
  43. return new ConcreteProductA();
  44. }
  45. }
  46. //¾ßÌ幤³§B£ºÊµÏÖÁ˳§Æ·µÄÉú³É·½·¨
  47. class ConcreteFactoryB implements AbstractFactory
  48. {
  49. public Product createProduct()
  50. {
  51. System. out .println( "¾ßÌ幤³§BÉú³É-->¾ßÌå²úÆ·B." );
  52. return new ConcreteProductB();
  53. }
  54. }

 

2 µ¥Àýģʽ(Singleton)

ΤС±¦ÓÐ7¸öÀÏÆÅ£¬µ«ÊÇÿ¸ö¶¼Ö»ÓÐËûÕâÒ»¸öÀϹ«£¬ËûµÄËùÓÐÀÏÆÅ½ÐÀϹ«Ê±£¬Ö¸µÄ¶¼ÊÇËû£¬Ëû¾ÍÊÇÒ»¸öµ¥Àý¡£

µ¥Àýģʽ½á¹¹

µ¥Àýģʽ°üº¬ÈçϽÇÉ«£º

  • Singleton£ºµ¥Àý

½á¹¹Í¼£º

ʱÐòͼ£º

ÓÅȱµã

  • Óŵ㣺ȫ¾ÖÖ»ÓÐÒ»¸öʵÀý£¬±ãÓÚͳһ¿ØÖÆ£¬Í¬Ê±¼õÉÙÁËϵͳ×ÊÔ´¿ªÏú¡£
  • ȱµã£ºÃ»ÓгéÏó²ã£¬À©Õ¹À§ÄÑ¡£

Ó¦Óó¡¾°

ÊʺÏÐèÒª×öÈ«¾Öͳһ¿ØÖƵij¡¾°£¬ÀýÈ磺ȫ¾ÖΨһµÄ±àÂëÉú³ÉÆ÷¡£

×¢ÒâÊÂÏî

Ö»¶ÔÍâÌṩ¹«¹²µÄgetInstance·½·¨£¬²»ÌṩÈκι«¹²¹¹Ô캯Êý¡£

¼òµ¥ÊµÏÖ

  1. public class Singleton
  2. {
  3. private static volatile Singleton instance= null ; //±£Ö¤ instance ÔÚËùÓÐÏß³ÌÖÐͬ²½
  4. private Singleton(){} //private ±ÜÃâÀàÔÚÍⲿ±»ÊµÀý»¯
  5. public static synchronized Singleton getInstance()
  6. {
  7. //getInstance ·½·¨Ç°¼Óͬ²½
  8. if(instance == null )
  9. {
  10. instance = new Singleton();
  11. }
  12. return instance;
  13. }
  14. }

3 ×°ÊÎģʽ(Decorator)

´óѧ±ÏÒµ£¬ÏëÒªË͸øÊÒÓÑÒ»¸öÓмÍÄîÒâÒåµÄÀñÎ¾ÍÕÒµ½Ò»ÕÅ´ó¼ÒµÄºÏÕÕ£¬ÔÚÉÏÃæÐ´ÉÏ¡°ÓÀÔ¶µÄÐֵܣ¡¡±£¬È»ºóÄÃÈ¥ÀñÆ·µê×°Á˸öÏà¿ò£¬ÔÙ°üÉÏÀñºÐ¡£ÕâÀïµÄÎÒºÍÀñÆ·µê¶¼ÊÇ×°ÊÎÆ÷£¬¶¼Ã»ÓиıäÕÕÆ¬±¾Éí£¬È´¶¼ÈÃÕÕÆ¬±äµÃ¸üÊʺÏ×÷ΪÀñÎïËÍÈË¡£

×°ÊÎģʽ½á¹¹

×°ÊÎģʽ°üº¬ÈçϽÇÉ«£º

  • Component£º³éÏó¹¹¼þ
  • ConcreteComponent £º ¾ßÌå¹¹¼þ
  • Decorator £º ³éÏó×°ÊÎÀà
  • ConcreteDecorator £º ¾ßÌå×°ÊÎÀà

½á¹¹Í¼£º

ʱÐòͼ£º

ÓÅȱµã

  • Óŵ㣺±È¼Ì³Ð¸ü¼ÓÁé»î£¨¼Ì³ÐÊÇñîºÏ¶ÈºÜ´óµÄ¾²Ì¬¹ØÏµ£©£¬¿ÉÒÔ¶¯Ì¬µÄΪ¶ÔÏóÔö¼ÓÖ°Ô𣬿ÉÒÔͨ¹ýʹÓò»Í¬µÄ×°ÊÎÆ÷×éºÏΪ¶ÔÏóÀ©Õ¹N¸öй¦ÄÜ£¬¶ø²»»áÓ°Ïìµ½¶ÔÏó±¾Éí¡£
  • ȱµã£ºµ±Ò»¸ö¶ÔÏóµÄ×°ÊÎÆ÷¹ý¶àʱ£¬»á²úÉúºÜ¶àµÄ×°ÊÎÀàС¶ÔÏóºÍ×°ÊÎ×éºÏ²ßÂÔ£¬Ôö¼Óϵͳ¸´ÔÓ¶È£¬Ôö¼Ó´úÂëµÄÔĶÁÀí½â³É±¾¡£

ÊÊÓó¡¾°

  • ÊʺÏÐèÒª£¨Í¨¹ýÅäÖã¬È磺diamond£©À´¶¯Ì¬Ôö¼õ¶ÔÏó¹¦Äܵij¡¾°¡£
  • ÊʺÏÒ»¸ö¶ÔÏóÐèÒªNÖÖ¹¦ÄÜÅÅÁÐ×éºÏµÄ³¡¾°£¨Èç¹ûÓü̳У¬»áʹ×ÓÀàÊýÁ¿±¬Õ¨Ê½Ôö³¤£©

×¢ÒâÊÂÏî

  • Ò»¸ö×°ÊÎÀàµÄ½Ó¿Ú±ØÐëÓë±»×°ÊÎÀàµÄ½Ó¿Ú±£³ÖÏàͬ£¬¶ÔÓÚ¿Í»§¶ËÀ´ËµÎÞÂÛÊÇ×°ÊÎ֮ǰµÄ¶ÔÏó»¹ÊÇ×°ÊÎÖ®ºóµÄ¶ÔÏ󶼿ÉÒÔÒ»Ö¶Դý¡£
  • ¾¡Á¿±£³Ö¾ßÌå¹¹¼þÀàComponent×÷Ϊһ¸ö¡°ÇᡱÀ࣬Ҳ¾ÍÊÇ˵²»Òª°ÑÌ«¶àµÄÂß¼­ºÍ״̬·ÅÔÚ¾ßÌå¹¹¼þÀàÖУ¬¿ÉÒÔͨ¹ý×°ÊÎÀà¡£

¼òµ¥ÊµÏÖ

  1. package decorator;
  2. public class DecoratorPattern
  3. {
  4. public static void main(String[] args)
  5. {
  6. Component component = new ConcreteComponent();
  7. component.operation();
  8. System. out .println( "---------------------------------" );
  9. Component decorator = new ConcreteDecorator(component);
  10. decorator.operation();
  11. }
  12. }
  13. //³éÏó¹¹¼þ½ÇÉ«
  14. interface Component
  15. {
  16. public void operation();
  17. }
  18. //¾ßÌå¹¹¼þ½ÇÉ«
  19. class ConcreteComponent implements Component
  20. {
  21. public ConcreteComponent()
  22. {
  23. System. out .println( "´´½¨¾ßÌå¹¹¼þ½ÇÉ«" );
  24. }
  25. public void operation()
  26. {
  27. System. out .println( "µ÷ÓþßÌå¹¹¼þ½ÇÉ«µÄ·½·¨operation()" );
  28. }
  29. }
  30. //³éÏó×°ÊνÇÉ«
  31. class Decorator implements Component
  32. {
  33. private Component component;
  34. public Decorator(Component component)
  35. {
  36. this.component=component;
  37. }
  38. public void operation()
  39. {
  40. component.operation();
  41. }
  42. }
  43. //¾ßÌå×°ÊνÇÉ«
  44. class ConcreteDecorator extends Decorator
  45. {
  46. public ConcreteDecorator(Component component)
  47. {
  48. super(component);
  49. }
  50. public void operation()
  51. {
  52. super.operation();
  53. addBehavior();
  54. }
  55. public void addBehavior()
  56. {
  57. System. out .println( "Ϊ¾ßÌå¹¹¼þ½ÇÉ«Ôö¼Ó¶îÍâµÄ¹¦ÄÜaddBehavior()" );
  58. }
  59. }

4 ²ßÂÔģʽ(Strategy)

ÄÐÉú×·ÃÃ×Óʱ£¬Ò»°ã¶¼»áÓõ½ÕâÖÖģʽ£¬³£¼ûµÄ²ßÂÔÓÐÕâЩ£ºÔ¼»á³Ô·¹£»¿´µçÓ°£»¿´Ñݳª»á£»¹ä½Ö£»È¥ÂÃÐС­¡­£¬ËäÈ»×öµÄÊÂÇ鲻ͬ£¬µ«¿ÉÒÔÏà»¥Ìæ»»£¬Î¨Ò»µÄÄ¿±ê¶¼ÊDz¶»ñÃÃ×ӵķ¼ÐÄ¡£

²ßÂÔģʽ½á¹¹

  • Context: »·¾³Àà
  • Strategy: ³éÏó²ßÂÔÀà
  • ConcreteStrategy: ¾ßÌå²ßÂÔÀà

½á¹¹Í¼£º

ʱÐòͼ£º

ÓÅȱµã

  • Óŵ㣺²ßÂÔģʽÌṩÁ˶ԡ°¿ª±ÕÔ­Ôò¡±µÄÍêÃÀÖ§³Ö£¬Óû§¿ÉÒÔÔÚ²»ÐÞ¸ÄÔ­ÓÐϵͳµÄ»ù´¡ÉÏÑ¡ÔñËã·¨»òÐÐΪ¡£¸Éµô¸´ÔÓÄÑ¿´µÄif-else¡£
  • ȱµã£ºµ÷ÓÃʱ£¬±ØÐëÌáǰ֪µÀ¶¼ÓÐÄÄЩ²ßÂÔģʽÀ࣬²ÅÄÜ×ÔÐоö¶¨µ±Ç°³¡¾°¸ÃʹÓúÎÖÖ²ßÂÔ¡£

ÊÔÓó¡¾°

Ò»¸öϵͳÐèÒª¶¯Ì¬µØÔÚ¼¸ÖÖ¿ÉÌæ»»Ëã·¨ÖÐÑ¡ÔñÒ»ÖÖ¡£²»Ï£ÍûʹÓÃÕß¹ØÐÄË㷨ϸ½Ú£¬½«¾ßÌåËã·¨·â×°½ø²ßÂÔÀàÖС£

×¢ÒâÊÂÏî

Ò»¶¨ÒªÔÚ²ßÂÔÀàµÄ×¢ÊÍÖÐ˵Ã÷¸Ã²ßÂÔµÄÓÃ;ºÍÊÊÓó¡¾°¡£

¼òµ¥ÊµÏÖ

  1. package strategy;
  2. public class StrategyPattern
  3. {
  4. public static void main(String[] args)
  5. {
  6. Context context = new Context();
  7. Strategy strategyA = new ConcreteStrategyA();
  8. context.setStrategy(strategyA);
  9. context.algorithm();
  10. System. out .println( "-----------------" );
  11. Strategy strategyB = new ConcreteStrategyB();
  12. context.setStrategy(strategyB);
  13. context.algorithm();
  14. }
  15. }
  16. //³éÏó²ßÂÔÀà
  17. interface Strategy
  18. {
  19. public void algorithm(); //²ßÂÔ·½·¨
  20. }
  21. //¾ßÌå²ßÂÔÀàA
  22. class ConcreteStrategyA implements Strategy
  23. {
  24. public void algorithm()
  25. {
  26. System. out .println( "¾ßÌå²ßÂÔAµÄ²ßÂÔ·½·¨±»·ÃÎÊ£¡" );
  27. }
  28. }
  29. //¾ßÌå²ßÂÔÀàB
  30. class ConcreteStrategyB implements Strategy
  31. {
  32. public void algorithm()
  33. {
  34. System. out .println( "¾ßÌå²ßÂÔBµÄ²ßÂÔ·½·¨±»·ÃÎÊ£¡" );
  35. }
  36. }
  37. //»·¾³Àà
  38. class Context
  39. {
  40. private Strategy strategy;
  41. public Strategy getStrategy()
  42. {
  43. return strategy;
  44. }
  45. public void setStrategy(Strategy strategy)
  46. {
  47. this.strategy=strategy;
  48. }
  49. public void algorithm()
  50. {
  51. strategy.algorithm();
  52. }
  53. }

5 ´úÀíģʽ(Proxy)

ÌÔ±¦µê¿Í·þ×ÜÊÇ»áÊÕµ½·Ç³£¶àµÄÖØ¸´ÎÊÌ⣬ÀýÈ磺ÓÐûÓÐÏÖ»õ£¿Ê²Ã´Ê±ºò·¢»õ?·¢Ê²Ã´¿ìµÝ£¿´óÁ¿»Ø´ðÖØ¸´ÐÔµÄÎÊÌâÌ«·³ÁË£¬ÓÚÊǾͳöÏÖÁËСÃÛ»úÆ÷ÈË£¬ËûÀ´°ï¿Í·þ»Ø´ðÄÇЩÒÑÖªµÄÎÊÌ⣬µ±Åöµ½Ð¡ÃÛÎÞ·¨½â´ðµÄÎÊÌâʱ£¬²Å»áתµ½È˹¤¿Í·þ¡£ÕâÀïµÄСÃÛ»úÆ÷È˾ÍÊǿͷþµÄ´úÀí¡£

´úÀíģʽ½á¹¹

´úÀíģʽ°üº¬ÈçϽÇÉ«£º

  • Subject: ³éÏóÖ÷Ìâ½ÇÉ«
  • Proxy: ´úÀíÖ÷Ìâ½ÇÉ«
  • RealSubject: ÕæÊµÖ÷Ìâ½ÇÉ«

½á¹¹Í¼£º

ʱÐòͼ£º

ÓÅȱµã

  • Óŵ㣺´úÀí¿ÉÒÔЭµ÷µ÷Ó÷½Óë±»µ÷Ó÷½£¬½µµÍÁËϵͳµÄñîºÏ¶È¡£¸ù¾Ý´úÀíÀàÐͺͳ¡¾°µÄ²»Í¬£¬¿ÉÒÔÆðµ½¿ØÖư²È«ÐÔ¡¢¼õСϵͳ¿ªÏúµÈ×÷Óá£
  • ȱµã£ºÔö¼ÓÁËÒ»²ã´úÀí´¦Àí£¬Ôö¼ÓÁËϵͳµÄ¸´ÔÓ¶È£¬Í¬Ê±¿ÉÄܻήµÍϵͳµÄÏàÓ¦ËÙ¶È¡£

ÊÔÓó¡¾°

ÀíÂÛÉÏ¿ÉÒÔ´úÀíÈκζÔÏ󣬳£¼ûµÄ´úÀíģʽÓУº

  • Ô¶³Ì(Remote)´úÀí£ºÎªÒ»¸öλÓÚ²»Í¬µÄµØÖ·¿Õ¼äµÄ¶ÔÏóÌṩһ¸ö±¾µØµÄ´úÀí¶ÔÏó£¬Õâ¸ö²»Í¬µÄµØÖ·¿Õ¼ä¿ÉÒÔÊÇÔÚͬһ̨Ö÷»úÖУ¬Ò²¿ÉÊÇÔÚÁíһ̨Ö÷»úÖУ¬Ô¶³Ì´úÀíÓÖ½Ð×ö´óʹ(Ambassador)¡£
  • ÐéÄâ(Virtual)´úÀí£ºÈç¹ûÐèÒª´´½¨Ò»¸ö×ÊÔ´ÏûºÄ½Ï´óµÄ¶ÔÏó£¬ÏÈ´´½¨Ò»¸öÏûºÄÏà¶Ô½ÏСµÄ¶ÔÏóÀ´±íʾ£¬ÕæÊµ¶ÔÏóÖ»ÔÚÐèҪʱ²Å»á±»ÕæÕý´´½¨¡£
  • Copy-on-Write´úÀí£ºËüÊÇÐéÄâ´úÀíµÄÒ»ÖÖ£¬°Ñ¸´ÖÆ£¨¿Ë¡£©²Ù×÷ÑÓ³Ùµ½Ö»ÓÐÔÚ¿Í»§¶ËÕæÕýÐèҪʱ²ÅÖ´ÐС£Ò»°ãÀ´Ëµ£¬¶ÔÏóµÄÉî¿Ë¡ÊÇÒ»¸ö¿ªÏú½Ï´óµÄ²Ù×÷£¬Copy-on-Write´úÀí¿ÉÒÔÈÃÕâ¸ö²Ù×÷ÑÓ³Ù£¬Ö»ÓжÔÏó±»Óõ½µÄʱºò²Å±»¿Ë¡¡£
  • ±£»¤(Protect or Access)´úÀí£º¿ØÖƶÔÒ»¸ö¶ÔÏóµÄ·ÃÎÊ£¬¿ÉÒÔ¸ø²»Í¬µÄÓû§Ìṩ²»Í¬¼¶±ðµÄʹÓÃȨÏÞ¡£
  • »º³å(Cache)´úÀí£ºÎªÄ³Ò»¸öÄ¿±ê²Ù×÷µÄ½á¹ûÌṩÁÙʱµÄ´æ´¢¿Õ¼ä£¬ÒÔ±ã¶à¸ö¿Í»§¶Ë¿ÉÒÔ¹²ÏíÕâЩ½á¹û¡£
  • ·À»ðǽ(Firewall)´úÀí£º±£»¤Ä¿±ê²»ÈöñÒâÓû§½Ó½ü¡£
  • ͬ²½»¯(Synchronization)´úÀí£ºÊ¹¼¸¸öÓû§Äܹ»Í¬Ê±Ê¹ÓÃÒ»¸ö¶ÔÏó¶øÃ»ÓгåÍ»¡£
  • ÖÇÄÜÒýÓÃ(Smart Reference)´úÀí£ºµ±Ò»¸ö¶ÔÏó±»ÒýÓÃʱ£¬ÌṩһЩ¶îÍâµÄ²Ù×÷£¬È罫´Ë¶ÔÏó±»µ÷ÓõĴÎÊý¼Ç¼ÏÂÀ´µÈ¡£

¼òµ¥ÊµÏÖ

  1. package proxy;
  2. public class ProxyPattern
  3. {
  4. public static void main(String[] args)
  5. {
  6. Proxy proxy = new Proxy();
  7. proxy.request();
  8. }
  9. }
  10. //³éÏóÖ÷Ìâ
  11. interface Subject
  12. {
  13. void request();
  14. }
  15. //ÕæÊµÖ÷Ìâ
  16. class RealSubject implements Subject
  17. {
  18. public void request()
  19. {
  20. System. out .println( "·ÃÎÊÕæÊµÖ÷Ìâ·½·¨..." );
  21. }
  22. }
  23. //´úÀí
  24. class Proxy implements Subject
  25. {
  26. private RealSubject realSubject;
  27. public void request()
  28. {
  29. if (realSubject== null )
  30. {
  31. realSubject=new RealSubject();
  32. }
  33. preRequest();
  34. realSubject.request();
  35. afterRequest();
  36. }
  37. public void preRequest()
  38. {
  39. System. out .println( "·ÃÎÊÕæÊµÖ÷Ìâ֮ǰµÄÔ¤´¦Àí¡£" );
  40. }
  41. public void afterRequest()
  42. {
  43. System. out .println( "·ÃÎÊÕæÊµÖ÷ÌâÖ®ºóµÄºóÐø´¦Àí¡£" );
  44. }
  45. }

6 ¹Û²ìÕßģʽ(Observer)

³ö²îÔÚÍ⣬ÏëÁ˽⺢×ÓÔÚ¼ÒµÄÇé¿ö£¬ÕâʱºòÖ»Òª¼ÓÈë¡°ÏàÇ×Ïà°®Ò»¼ÒÈË¡±Èº£¬ÀϰÖÀÏÂè»á¾­³£°Ñº¢×ÓµÄÕÕÆ¬ºÍÊÓÆµ·¢µ½ÈºÀÄãÒª×öµÄ¾ÍÊÇ×÷Ϊһ¸ö¹Û²ìÕߣ¬Ë¢Ò»Ë¢ÈºÀïµÄÐÅÏ¢¾ÍÄܹ»Á˽âÒ»ÇÐÁË¡£

¹Û²ìÕßģʽ½á¹¹

¹Û²ìÕßģʽ°üº¬ÈçϽÇÉ«£º

  • Subject£ºÄ¿±ê
  • ConcreteSubject £º ¾ßÌåÄ¿±ê
  • Observer £º ¹Û²ìÕß
  • ConcreteObserver £º ¾ßÌå¹Û²ìÕß

½á¹¹Í¼£º

ʱÐòͼ£º

ÓÅȱµã

  • Óŵ㣺½«¸´ÔӵĴ®Ðд¦ÀíÂß¼­±äΪµ¥Ôª»¯µÄ¶ÀÁ¢´¦ÀíÂß¼­£¬±»¹Û²ìÕßÖ»Êǰ´ÕÕ×Ô¼ºµÄÂß¼­·¢³öÏûÏ¢£¬²»ÓùØÐÄË­À´Ïû·ÑÏûÏ¢£¬Ã¿¸ö¹Û²ìÕßÖ»´¦Àí×Ô¼º¹ØÐĵÄÄÚÈÝ¡£Âß¼­Ï໥¸ôÀë´øÀ´¼òµ¥ÇåˬµÄ´úÂë½á¹¹¡£
  • ȱµã£º¹Û²ìÕ߽϶àʱ£¬¿ÉÄܻỨ·ÑÒ»¶¨µÄ¿ªÏúÀ´·¢ÏûÏ¢£¬µ«Õâ¸öÏûÏ¢¿ÉÄܽöÒ»¸ö¹Û²ìÕßÏû·Ñ¡£

ÊÊÓó¡¾°

ÊÊÓÃÓÚÒ»¶Ô¶àµÄµÄÒµÎñ³¡¾°£¬Ò»¸ö¶ÔÏó·¢Éú±ä¸ü£¬»á´¥·¢N¸ö¶ÔÏó×öÏàÓ¦´¦ÀíµÄ³¡¾°¡£ÀýÈ磺¶©µ¥µ÷¶È֪ͨ£¬ÈÎÎñ״̬±ä»¯µÈ¡£

×¢ÒâÊÂÏî

±ÜÃâ¹Û²ìÕßÓë±»¹Û²ìÕßÖ®¼äÐγÉÑ­»·ÒÀÀµ£¬¿ÉÄÜ»áÒò´Ëµ¼ÖÂϵͳ±ÀÀ£¡£

¼òµ¥ÊµÏÖ

  1. package observer;
  2. import java.util.*;
  3. public class ObserverPattern
  4. {
  5. public static void main(String[] args)
  6. {
  7. Subject subject = new ConcreteSubject();
  8. Observer obsA = new ConcreteObserverA();
  9. Observer obsb = new ConcreteObserverB();
  10. subject. add (obsA);
  11. subject. add (obsB);
  12. subject.setState(0);
  13. }
  14. }
  15. //³éÏóÄ¿±ê
  16. abstract class Subject
  17. {
  18. protected List<Observer> observerList = new ArrayList<Observer>();
  19. //Ôö¼Ó¹Û²ìÕß·½·¨
  20. public void add (Observer observer)
  21. {
  22. observers. add (observer);
  23. }
  24. //ɾ³ý¹Û²ìÕß·½·¨
  25. public void remove(Observer observer)
  26. {
  27. observers.remove(observer);
  28. }
  29. public abstract void notify(); //֪ͨ¹Û²ìÕß·½·¨
  30. }
  31. //¾ßÌåÄ¿±ê
  32. class ConcreteSubject extends Subject
  33. {
  34. private Integer state;
  35. public void setState( Integer state){
  36. this.state = state;
  37. // ״̬¸Ä±ä֪ͨ¹Û²ìÕß
  38. notify();
  39. }
  40. public void notify()
  41. {
  42. System. out .println( "¾ßÌåÄ¿±ê״̬·¢Éú¸Ä±ä..." );
  43. System. out .println( "--------------" );
  44. for (Observer obs:observers)
  45. {
  46. obs.process();
  47. }
  48. }
  49. }
  50. //³éÏó¹Û²ìÕß
  51. interface Observer
  52. {
  53. void process(); //¾ßÌåµÄ´¦Àí
  54. }
  55. //¾ßÌå¹Û²ìÕßA
  56. class ConcreteObserverA implements Observer
  57. {
  58. public void process()
  59. {
  60. System. out .println( "¾ßÌå¹Û²ìÕßA´¦Àí£¡" );
  61. }
  62. }
  63. //¾ßÌå¹Û²ìÕßB
  64. class ConcreteObserverB implements Observer
  65. {
  66. public void process()
  67. {
  68. System. out .println( "¾ßÌå¹Û²ìÕßB´¦Àí£¡" );
  69. }
  70. }
   
2040 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
 
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
iPersonµÄ¹ý³Ì¹Û£ºÒª ¹ý³Ì or ½á¹û
¡°ÒÔÈËΪ±¾¡±µÄ¹¤³ÌÕÜѧ
ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
UML ͼ½â£ºË³Ðòͼ£¨ sequence diagram £©
UML ͼ½â£º¶ÔÏóͼ£¨ class diagram £©
×îпγÌ
»ùÓÚUMLºÍEA½øÐÐϵͳ·ÖÎöÉè¼Æ
UML+EA+ÃæÏò¶ÔÏó·ÖÎöÉè¼Æ
»ùÓÚSysMLºÍEA½øÐÐϵͳÉè¼ÆÓ뽨ģ
UML + ǶÈëʽϵͳ·ÖÎöÉè¼Æ
ÁìÓòÇý¶¯µÄ½¨Ä£ÓëÉè¼Æ
³É¹¦°¸Àý
ijµçÐÅÔËÓª¹©Ó¦ÉÌ Ó¦ÓÃUML½øÐÐÃæÏò¶ÔÏó·ÖÎö
·é»ðͨÐÅ UML½øÐÐÃæÏò¶ÔÏóµÄ·ÖÎöÉè¼Æ
Î÷ÃÅ×Ó UMLÓëǶÈëʽÈí¼þ·ÖÎöÉè¼Æ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ ´Óϵͳµ½Èí¼þµÄ·ÖÎö¡¢Éè¼Æ
ÉîÛÚijÆû³µÆóÒµ Ä£ÐÍÇý¶¯µÄ·ÖÎöÉè¼Æ