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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
.NETÉè¼ÆÄ£Ê½£¨7£©£º´´½¨ÐÍģʽרÌâ×ܽᣨCreational Pattern£©
 
×÷Õß Àî»á¾ü£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-09-16
  2554  次浏览      27
 

¸ÅÊö

´´½¨ÐÍģʽ£¬¾ÍÊÇÓÃÀ´´´½¨¶ÔÏóµÄģʽ£¬³éÏóÁËʵÀý»¯µÄ¹ý³Ì¡£Ëü°ïÖúÒ»¸öϵͳ¶ÀÁ¢ÓÚÈçºÎ´´½¨¡¢×éºÏºÍ±íʾËüµÄÄÇЩ¶ÔÏó¡£±¾ÎĶÔÎåÖÖ³£Óô´½¨ÐÍģʽ½øÐÐÁ˱Ƚϣ¬Í¨¹ýÒ»¸öÓÎÏ·¿ª·¢³¡¾°µÄÀý×ÓÀ´Ëµ¸ÃÈçºÎʹÓô´½¨ÐÍģʽ¡£

ΪʲôÐèÒª´´½¨ÐÍģʽ

ËùÓеĴ´½¨ÐÍģʽ¶¼ÓÐÁ½¸öÓÀºãµÄÖ÷ÐýÂÉ£ºµÚÒ»£¬ËüÃǶ¼½«ÏµÍ³Ê¹ÓÃÄÄЩ¾ßÌåÀàµÄÐÅÏ¢·â×°ÆðÀ´£»µÚ¶þ£¬ËüÃÇÒþ²ØÁËÕâЩÀàµÄʵÀýÊÇÈçºÎ±»´´½¨ºÍ×éÖ¯µÄ¡£Íâ½ç¶ÔÓÚÕâЩ¶ÔÏóÖ»ÖªµÀËüÃǹ²Í¬µÄ½Ó¿Ú£¬¶ø²»Çå³þÆä¾ßÌåµÄʵÏÖϸ½Ú¡£ÕýÒòÈç´Ë£¬´´½¨ÐÍģʽÔÚ´´½¨Ê²Ã´£¨what£©£¬ÓÉË­£¨who£©À´´´½¨£¬ÒÔ¼°ºÎʱ£¨when£©´´½¨ÕâЩ·½Ã棬¶¼ÎªÈí¼þÉè¼ÆÕßÌṩÁ˾¡¿ÉÄÜ´óµÄÁé»îÐÔ¡£

¼Ù¶¨ÔÚÒ»¸öÓÎÏ·¿ª·¢³¡¾°ÖУ¬»áÓõ½Ò»¸öÏÖ´ú·ç¸ñ·¿ÎݵĶÔÏ󣬰´ÕÕÎÒÃǵÄÒ»°ãÏë·¨£¬¼ÈÈ»ÐèÒª¶ÔÏó¾Í´´½¨Ò»¸ö£º

ModernRoom room = new ModernRoom();

ºÃÁË£¬ÏÖÔÚÏÖ´ú·ç¸ñ·¿ÎݵĶÔÏóÒѾ­ÓÐÁË£¬Èç¹ûÕâʱ·¿Îݵķç¸ñ±ä»¯ÁË£¬ÐèÒªµÄÊǹŵä·ç¸ñµÄ·¿ÎÝ£¬ÐÞ¸Äһϣº

ClassicalRoom room = new ClassicalRoom();

ÊÔÏëһϣ¬ÔÚÎÒÃǵijÌÐòÖÐÓжàÉÙ´¦µØ·½Óõ½ÁËÕâÑùµÄ´´½¨Âß¼­£¬¶øÕâÀï½ö½öÊÇ·¿Îݵķç¸ñ±ä»¯ÁË£¬¾ÍÐèÒªÐ޸ijÌÐòÖÐËùÓеÄÕâÑùµÄÓï¾ä¡£ÏÖÔÚÎÒÃÇ·â×°¶ÔÏó´´½¨µÄÂß¼­£¬°Ñ¶ÔÏóµÄ´´½¨·ÅÔÚÒ»¸ö¹¤³§·½·¨ÖУº

ModernFactory factory = new ModernFactory();

ModernRoom room = factory.Create();

µ±·¿Îݵķç¸ñ±ä»¯Ê±£¬Ö»ÐèÒªÐÞ¸Ä

ClassicalFactory factory = new ClassicalFactory();

ClassicalRoom room = factory.Create();

¶øÆäËüµÄÓõ½roomµÄµØ·½ÈÔÈ»²»±ä¡£Õâ¾ÍÊÇΪʲôÐèÒª´´½¨ÐÍģʽÁË¡£´´½¨Õßģʽ×÷ÓÿÉÒÔ¸ÅÀ¨ÎªÈçÏÂÁ½µã£º

1£®·â×°´´½¨Âß¼­£¬¾ø²»½ö½öÊÇnewÒ»¸ö¶ÔÏóÄÇô¼òµ¥¡£

2£®·â×°´´½¨Âß¼­±ä»¯£¬¿Í»§´úÂ뾡Á¿²»Ð޸쬻ò¾¡Á¿ÉÙÐ޸ġ£

³£¼ûµÄÎåÖÖ´´½¨ÐÍģʽ

1.µ¥¼þģʽ£¨Singleton Pattern£©½â¾öµÄÊÇʵÌå¶ÔÏóµÄ¸öÊýÎÊÌ⣬ÆäËûµÄ¶¼Êǽâ¾önewËù´øÀ´µÄñîºÏ¹ØÏµÎÊÌâ¡£

2.¹¤³§·½·¨Ä£Ê½£¨Factory Pattern£©ÔÚ¹¤³§·½·¨ÖУ¬¹¤³§Àà³ÉΪÁ˳éÏóÀ࣬Æäʵ¼ÊµÄ´´½¨¹¤×÷½«ÓÉÆä¾ßÌå×ÓÀàÀ´Íê³É¡£¹¤³§·½·¨µÄÓÃÒâÊǶ¨ÒåÒ»¸ö´´½¨²úÆ·¶ÔÏóµÄ¹¤³§½Ó¿Ú£¬½«Êµ¼Ê´´½¨¹¤×÷ÍÆ³Ùµ½×ÓÀàÖÐÈ¥£¬Ç¿µ÷µÄÊÇ¡°µ¥¸ö¶ÔÏ󡱵ı仯¡£

3.³éÏ󹤳§Ä£Ê½£¨Abstract Factory£©³éÏ󹤳§ÊÇËùÓй¤³§Ä£Ê½ÖÐ×îΪ³éÏóºÍ×î¾ßÓÐÒ»°ãÐÔµÄÒ»ÖÖÐÎ̬¡£³éÏ󹤳§¿ÉÒÔÏò¿Í»§Ìṩһ¸ö½Ó¿Ú£¬Ê¹µÃ¿Í»§¿ÉÒÔÔÚ²»±ØÖ¸¶¨²úÆ·µÄ¾ßÌåÀàÐ͵ÄÇé¿öÏ£¬´´½¨¶à¸ö²úÆ·×åÖеIJúÆ·¶ÔÏó£¬Ç¿µ÷µÄÊÇ¡°ÏµÁжÔÏ󡱵ı仯¡£

4.Éú³ÉÆ÷ģʽ£¨Builder Pattern£©°Ñ¹¹Ôì¶ÔÏóʵÀýµÄÂß¼­ÒƵ½ÁËÀàµÄÍⲿ£¬ÔÚÕâ¸öÀàµÄÍⲿ¶¨ÒåÁËÕâ¸öÀàµÄ¹¹ÔìÂß¼­¡£Ëû°ÑÒ»¸ö¸´ÔÓ¶ÔÏóµÄ¹¹Ôì¹ý³Ì´Ó¶ÔÏóµÄ±íʾÖзÖÀë³öÀ´¡£ÆäÖ±½ÓЧ¹ûÊǽ«Ò»¸ö¸´ÔӵĶÔÏó¼ò»¯ÎªÒ»¸ö±È½Ï¼òµ¥µÄÄ¿±ê¶ÔÏó¡£ËûÇ¿µ÷µÄÊDzúÆ·µÄ¹¹Ôì¹ý³Ì¡£

5.Ô­ÐÍģʽ£¨Prototype Pattern£©ºÍ¹¤³§Ä£Ê½Ò»Ñù£¬Í¬Ñù¶Ô¿Í»§Òþ²ØÁ˶ÔÏó´´½¨¹¤×÷£¬µ«ÊÇ£¬Óëͨ¹ý¶ÔÒ»¸öÀà½øÐÐʵÀý»¯À´¹¹ÔìжÔÏó²»Í¬µÄÊÇ£¬Ô­ÐÍģʽÊÇͨ¹ý¿½±´Ò»¸öÏÖÓжÔÏóÉú³ÉжÔÏóµÄ¡£

ÈçºÎÑ¡ÔñʹÓô´½¨ÐÍģʽ

¼ÌÐø¿¼ÂÇÉÏÃæÌáµ½µÄÓÎÏ·¿ª·¢³¡¾°£¬¼Ù¶¨ÔÚÕâ¸öÓÎÏ·³¡¾°ÖÐÎÒÃÇʹÓõ½µÄÓÐǽ£¨Wall£©£¬ÎÝ×Ó£¨Room£©£¬ÃÅ£¨Door£©¼¸¸ö²¿¼þ¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬Í¬ÑùÊǶÔÏóµÄ´´½¨ÎÊÌ⣬µ«ÊÇ»á¸ù¾ÝËùÒª½â¾öµÄÎÊÌⲻͬ¶øÊ¹Óò»Í¬µÄ´´½¨ÐÍģʽ¡£

Èç¹ûÔÚÓÎÏ·ÖУ¬Ò»¸öÎÝ×ÓÖ»ÔÊÐíÓÐÒ»¸öÃÅ´æÔÚ£¬ÄÇôÕâ¾ÍÊÇÒ»¸öʹÓÃSignletonģʽµÄÀý×Ó£¬È·±£Ö»ÓÐÒ»¸öDoorÀàµÄʵÀý±»´´½¨¡£½â¾öµÄÊǶÔÏó´´½¨¸öÊýµÄÎÊÌâ¡£

ʾÀý´úÂ룺

using System;

public sealed class SigletonDoor

{

    static readonly SigletonDoor instance=new SigletonDoor();

    static SigletonDoor()

    {

    }

    public static SigletonDoor Instance

    {

        get

        {

            return instance;

        }

    }

}

ÔÚÓÎÏ·ÖÐÐèÒª´´½¨Ç½£¬ÎÝ×ÓµÄʵÀýʱ£¬ÎªÁ˱ÜÃâÖ±½Ó¶Ô¹¹ÔìÆ÷µÄµ÷ÓöøÊµÀý»¯À࣬Õâʱ¾ÍÊǹ¤³§·½·¨Ä£Ê½ÁË£¬Ã¿Ò»¸ö²¿¼þ¶¼ÓÐËü×Ô¼ºµÄ¹¤³§Àà¡£½â¾öµÄÊÇ¡°µ¥¸ö¶ÔÏó¡±µÄÐèÇó±ä»¯ÎÊÌâ¡£

ʾÀý´úÂ룺

using System;

public abstract class Wall

{

    public abstract void Display();

}

public class ModernWall:Wall

{

    public override void Display()

    {

        Console.WriteLine("ModernWall Builded");
    }
}
public abstract class WallFactory
{
    public abstract Wall Create();
}
public class ModernFactory:WallFactory
{
    public override Wall Create()
    {
        return new ModernWall();;
    }
}

ÔÚÓÎÏ·³¡¾°ÖУ¬²»¿ÉÄÜÖ»ÓÐÒ»ÖÖǽ»òÎÝ×Ó£¬ÓпÉÄÜÓÐÏÖ´ú·ç¸ñ£¨Modern£©£¬¹Åµä·ç¸ñ£¨Classical£©µÈ¶àϵÁзç¸ñµÄ²¿¼þ¡£Õâʱ¾ÍÊÇһϵÁжÔÏóµÄ´´½¨ÎÊÌâÁË£¬ÊÇÒ»¸ö³éÏ󹤳§µÄÀý×Ó¡£½â¾öµÄÊÇ¡°ÏµÁжÔÏó¡±µÄÐèÇó±ä»¯ÎÊÌâ¡£

ʾÀý´úÂ룺

using System;

public abstract class Wall

{

    public abstract void Display();

}

public class ModernWall:Wall

{

    public override void Display()

    {

        Console.WriteLine("ModernWall Builded");
    }
}
public class ClassicalWall:Wall
{
    public override void Display()
    {
        Console.WriteLine("ClassicalWall Builded");
    }
}
public abstract class Room
{
    public abstract void Display();
}
 
public class ModernRoom:Room
{
    public override void Display()
    {
        Console.WriteLine("ModernRoom Builded");
    }
}

public class ClassicalRoom:Room
{
    public override void Display()
    {
        Console.WriteLine("ClassicalRoom Builded");
    }
}

public abstract class AbstractFactory
{
    public abstract Wall CreateWall();
    public abstract Room CreateRoom();
}

public class ModernFactory:AbstractFactory
{
    public override Wall CreateWall()
    {
        return new ModernWall();
    }

    public override Room CreateRoom()
    {
        return new ModernRoom();
    }
}

public class ClassicalFactory:AbstractFactory
{
    public override Wall CreateWall()
    {
        return new ClassicalWall();
    }

    public override Room CreateRoom()
    {
        return new ClassicalRoom();
    }
}

Èç¹ûÔÚÓÎÏ·³¡¾°ÖУ¬¹¹³Éijһ¸ö³¡¾°µÄËã·¨±È½ÏÎȶ¨£¬ÀýÈ磺Õâ¸ö³¡¾°¾ÍÊÇÓÃËĶÂǽ£¬Ò»¸öÎÝ×Ó£¬Ò»ÉÈÃÅÀ´¹¹³ÉµÄ£¬µ«¾ßÌåÊÇÓÃʲô·ç¸ñµÄǽ¡¢ÎÝ×ÓºÍÃÅÔòÊDz»Í£µÄ±ä»¯µÄ£¬Õâ¾ÍÊÇÒ»¸öÉú³ÉÆ÷ģʽµÄÀý×Ó¡£½â¾öµÄÊÇ¡°¶ÔÏ󲿷֡±µÄÐèÇó±ä»¯ÎÊÌâ¡£

ʾÀý´úÂ룺

using System;

using System.Collections;

public class Director

{

    public void Construct( Builder builder )

    {

        builder.BuildWall();

        builder.BuildRoom();

        builder.BuildDoor();

    }

}

 

public abstract class Builder

{

    public abstract void BuildWall();

    public abstract void BuildRoom();

    public abstract void BuildDoor();

    public abstract GameScene GetResult();

}

 

public class GameBuilder : Builder

{

    private GameScene g;

    public override void BuildWall()

    {

        g = new GameScene();

        g.Add( "Wall" );
    }

    public override void BuildRoom()
    {
        g.Add( "Room" );
    }
    public override void BuildDoor()
    {
        g.Add( "Door" );
    }

    public override GameScene GetResult()
    {
        return g;
    }
}

public class GameScene
{
    ArrayList parts = new ArrayList();
    public void Add( string part )
    {
        parts.Add( part );
    }

    public void Display()
    {
        Console.WriteLine( " GameScene Parts£º" );
        foreach( string part in parts )
            Console.WriteLine( part );
    }
}

Èç¹ûÔÚÓÎÏ·ÖУ¬ÐèÒª´óÁ¿µÄ¹Åµä·ç¸ñ»òÏÖ´ú·ç¸ñµÄǽ»òÎÝ×Ó£¬Õâʱ¿ÉÒÔͨ¹ý¿½±´Ò»¸öÒÑÓеÄÔ­ÐͶÔÏóÀ´Éú³ÉжÔÏ󣬾ÍÊÇÒ»¸öÔ­ÐÍģʽµÄÀý×ÓÁË¡£Í¨¹ý¿Ë¡À´½â¾ö¡°Ò×±ä¶ÔÏ󡱵Ĵ´½¨ÎÊÌâ¡£

ʾÀý´úÂ룺

using System;

 

public abstract class RoomPrototype

{

    public abstract RoomPrototype Clone();

}

 

public class ModernPrototype:RoomPrototype

{

    public override RoomPrototype Clone()

    {

        return (RoomPrototype)this.MemberwiseClone();

    }

}

 

public class ClassicalPrototype:RoomPrototype

{

    public override RoomPrototype Clone()

    {

        return (RoomPrototype)this.MemberwiseClone();

    }

}

¾¿¾¹Ñ¡ÓÃÄÄÒ»ÖÖģʽ×îºÃÈ¡¾öÓںܶàµÄÒòËØ¡£Ê¹ÓÃAbstract Factory¡¢Prototype Pattern»òBuilder PatternµÄÉè¼Æ±ÈʹÓÃFactory MethodµÄÉè¼Æ¸ü¼ÓÁé»î£¬µ«ÊÇÒ²¸ü¼Ó¸´ÔÓ£¬ÓÈÆäAbstract FactoryÐèÒªÅÓ´óµÄ¹¤³§ÀàÀ´Ö§³Ö¡£Í¨³££¬Éè¼ÆÒÔʹÓÃFactory Method¿ªÊ¼£¬²¢ÇÒµ±Éè¼ÆÕß·¢ÏÖÐèÒª¸ü´óµÄÁé»îÐÔʱ£¬Éè¼Æ±ã»áÏòÆäËûÉè¼ÆÄ£Ê½ÑÝ»¯£¬µ±ÄãÔÚ¶à¸öÉè¼ÆÄ£Ê½Ö®¼ä½øÐÐȨºâµÄʱºò£¬Á˽â¶à¸öÉè¼ÆÄ£Ê½¿ÉÒÔ¸øÄãÌṩ¸ü¶àµÄÑ¡ÔñÓàµØ¡£

×ܽá

ʹÓô´½¨ÕßģʽÊÇΪÁËÌá¸ßϵͳµÄ¿Éά»¤ÐԺͿÉÀ©Õ¹ÐÔ£¬Ìá¸ßÓ¦¶ÔÐèÇó±ä»¯µÄÄÜÁ¦£¡

 

   
2554 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
Visitor Parttern
ÓÉ±í¼°À￴ģʽ
Éè¼ÆÄ£Ê½Ëæ±ÊϵÁÐ
ÉîÈëdz³öÉè¼ÆÄ£Ê½-½éÉÜ
.NETÖеÄÉè¼ÆÄ£Ê½

Ïà¹ØÅàѵ¿Î³Ì

J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Ó¦ÓÃģʽÉè¼ÆJavaÆóÒµ¼¶Ó¦ÓÃ
Éè¼ÆÄ£Ê½Ô­ÀíÓëÓ¦ÓÃ
J2EEÉè¼ÆÄ£Ê½Ö¸ÄÏ
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Éè¼ÆÄ£Ê½¼°ÆäCSharpʵÏÖ


ijµçÁ¦¹«Ë¾ Éè¼ÆÄ£Ê½Ô­Àí
À¶ÍØÆË Éè¼ÆÄ£Ê½Ô­Àí¼°Ó¦ÓÃ
ÎÀÐǵ¼º½ UML & OOAD
ÌÀɭ·͸Ñз¢ÖÐÐÄ UML& OOAD
Öдïµçͨ Éè¼ÆÄ£Ê½Ô­Àí
Î÷ÃÅ×Ó Ç¶ÈëʽÉè¼ÆÄ£Ê½
 
 
 
¡¡