الگوی پل، یک الگوی طراحی در مهندسی نرم افزار است که به معنای "جداسازی یک انتزاع از اجرای آن به طوری که این دو بتوانند به صورت مستقل تغییر پذیر باشند. "می باشد. این الگو توسط باند چهار نفره ( GoF ) معرفی شده است. [ ۱] الگوی پل از گروه های قالب دار و گروه های تجمعی و بعضاً ارث بری برای جداسازی مسئولیتها در طبقات مختلف استفاده می کند.
هنگامی که یک کلاس اغلب تغییر می کند، ویژگی های برنامه نویسی شی گرا بسیار مفید خواهد بود، چرا که تغییرات در کد برنامه، می تواند با حداقل اطلاعات از برنامه صورت گیرد. زمانی که کلاس ها و کاری که آن ها انجام می دهند نسبت به یگدیگر تفاوت های زیادی داشته باشد، از الگوی پل استفاده می شود. خود کلاس به عنوان انتزاع در نظر گرفته می شود و کاری که انجام می دهد در مرحله پیاده سازی آن است. همچنین الگوی پل می تواند به عنوان دو لایه از انتزاع در نظر گرفته شود.
زمانی که تنها یک پیاده سازی ثابت امکان پذیر است در زبان C++ این الگو در اصطلاح Pimpl شناخته می شود.
الگوی پل اغلب با الگوی آداپتور اشتباه گرفته می شود. در واقع، الگوی پل اغلب در زبان جاوا توسط کلاس الگوی آداپتور پیاده سازی می شود. مانند مثالی که در ادامه آمده است.
الگوی پل در ساختار درخت شیءها را قرار می دهد. این الگو انتراع را از پیاده سازی جدا می کند. در این جا انتزاع نقش مشتری ای را اجرا می کند که اشیاء از آن فراخوانی می شوند. مثالی برای پیاده سازی در C# در ادامه آمده است:
// Helps in providing truly decoupled architecture public interface IBridge { void Function1 ( ) ; void Function2 ( ) ; } public class Bridge1 : IBridge { public void Function1 ( ) { Console. WriteLine ( " Bridge1. Function1" ) ; } public void Function2 ( ) { Console. WriteLine ( " Bridge1. Function2" ) ; } } public class Bridge2 : IBridge { public void Function1 ( ) { Console. WriteLine ( " Bridge2. Function1" ) ; } public void Function2 ( ) { Console. WriteLine ( " Bridge2. Function2" ) ; } } public interface IAbstractBridge { void CallMethod1 ( ) ; void CallMethod2 ( ) ; } public class AbstractBridge : IAbstractBridge { public IBridge bridge; public AbstractBridge ( IBridge bridge ) { this. bridge = bridge; } public void CallMethod1 ( ) { this. bridge. Function1 ( ) ; } public void CallMethod2 ( ) { this. bridge. Function2 ( ) ; } } همان طوری که می بینید، کلاس های پل، همگی از معماری رابط - محور متشابهی برای ساخت اشیاء استفاده می کنند. از طرف دیگر، انتزاع، یک شیء از مرحله پیاده سازی را گرفته و آن را اجرا می کند. در نتیجه، آن ها را کاملاً از یکدیگر جدا می کند.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفهنگامی که یک کلاس اغلب تغییر می کند، ویژگی های برنامه نویسی شی گرا بسیار مفید خواهد بود، چرا که تغییرات در کد برنامه، می تواند با حداقل اطلاعات از برنامه صورت گیرد. زمانی که کلاس ها و کاری که آن ها انجام می دهند نسبت به یگدیگر تفاوت های زیادی داشته باشد، از الگوی پل استفاده می شود. خود کلاس به عنوان انتزاع در نظر گرفته می شود و کاری که انجام می دهد در مرحله پیاده سازی آن است. همچنین الگوی پل می تواند به عنوان دو لایه از انتزاع در نظر گرفته شود.
زمانی که تنها یک پیاده سازی ثابت امکان پذیر است در زبان C++ این الگو در اصطلاح Pimpl شناخته می شود.
الگوی پل اغلب با الگوی آداپتور اشتباه گرفته می شود. در واقع، الگوی پل اغلب در زبان جاوا توسط کلاس الگوی آداپتور پیاده سازی می شود. مانند مثالی که در ادامه آمده است.
الگوی پل در ساختار درخت شیءها را قرار می دهد. این الگو انتراع را از پیاده سازی جدا می کند. در این جا انتزاع نقش مشتری ای را اجرا می کند که اشیاء از آن فراخوانی می شوند. مثالی برای پیاده سازی در C# در ادامه آمده است:
// Helps in providing truly decoupled architecture public interface IBridge { void Function1 ( ) ; void Function2 ( ) ; } public class Bridge1 : IBridge { public void Function1 ( ) { Console. WriteLine ( " Bridge1. Function1" ) ; } public void Function2 ( ) { Console. WriteLine ( " Bridge1. Function2" ) ; } } public class Bridge2 : IBridge { public void Function1 ( ) { Console. WriteLine ( " Bridge2. Function1" ) ; } public void Function2 ( ) { Console. WriteLine ( " Bridge2. Function2" ) ; } } public interface IAbstractBridge { void CallMethod1 ( ) ; void CallMethod2 ( ) ; } public class AbstractBridge : IAbstractBridge { public IBridge bridge; public AbstractBridge ( IBridge bridge ) { this. bridge = bridge; } public void CallMethod1 ( ) { this. bridge. Function1 ( ) ; } public void CallMethod2 ( ) { this. bridge. Function2 ( ) ; } } همان طوری که می بینید، کلاس های پل، همگی از معماری رابط - محور متشابهی برای ساخت اشیاء استفاده می کنند. از طرف دیگر، انتزاع، یک شیء از مرحله پیاده سازی را گرفته و آن را اجرا می کند. در نتیجه، آن ها را کاملاً از یکدیگر جدا می کند.
wiki: الگوی پل