ਲੇਖ

ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਕੀ ਹਨ: ਇਹਨਾਂ ਦੀ ਵਰਤੋਂ ਕਿਉਂ ਕਰੋ, ਵਰਗੀਕਰਨ, ਫ਼ਾਇਦੇ ਅਤੇ ਨੁਕਸਾਨ

ਸੌਫਟਵੇਅਰ ਇੰਜੀਨੀਅਰਿੰਗ ਵਿੱਚ, ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਉਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਦੇ ਅਨੁਕੂਲ ਹੱਲ ਹਨ ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਸੌਫਟਵੇਅਰ ਡਿਜ਼ਾਈਨ ਵਿੱਚ ਵਾਪਰਦੀਆਂ ਹਨ।

ਉਹ ਪ੍ਰੀ ਪ੍ਰੋਜੈਕਟਾਂ ਵਾਂਗ ਹਨdefiਨਾਈਟ, ਅਜ਼ਮਾਏ ਗਏ ਅਤੇ ਟੈਸਟ ਕੀਤੇ ਟੂਲ ਜੋ ਤੁਸੀਂ ਆਪਣੇ ਕੋਡ ਵਿੱਚ ਆਵਰਤੀ ਡਿਜ਼ਾਈਨ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਅਨੁਕੂਲਿਤ ਕਰ ਸਕਦੇ ਹੋ।

ਅਨੁਮਾਨਿਤ ਪੜ੍ਹਨ ਦਾ ਸਮਾਂ: 6 ਮਿੰਟ

ਇੱਕ ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਕੀ ਹੈ

ਇੱਕ ਡਿਜ਼ਾਇਨ ਪੈਟਰਨ ਉਹ ਕੋਡ ਨਹੀਂ ਹੈ ਜਿਸਨੂੰ ਅਸੀਂ ਆਪਣੇ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਕਾਪੀ ਅਤੇ ਪਾ ਸਕਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਸਟੈਂਡਰਡ ਫੰਕਸ਼ਨਾਂ ਜਾਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨਾਲ ਕਰ ਸਕਦੇ ਹਾਂ। ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਇੱਕ ਆਮ ਧਾਰਨਾ ਹੈ ਜੋ ਕਿਸੇ ਖਾਸ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਦੇ ਸਮਰੱਥ ਹੈ। ਮੂਲ ਰੂਪ ਵਿੱਚ ਇੱਕ ਮਾਡਲ ਜਿਸ ਦੇ ਵੇਰਵਿਆਂ ਦੀ ਅਸੀਂ ਪਾਲਣਾ ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਇੱਕ ਹੱਲ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹਾਂ ਜੋ ਸਾਡੇ ਪ੍ਰੋਗਰਾਮ ਦੀ ਅਸਲੀਅਤ ਨੂੰ ਫਿੱਟ ਕਰਦਾ ਹੈ।

ਮਾਡਲ ਅਕਸਰ ਐਲਗੋਰਿਦਮ ਨਾਲ ਉਲਝਣ ਵਿੱਚ ਹੁੰਦੇ ਹਨ, ਕਿਉਂਕਿ ਦੋਵੇਂ ਧਾਰਨਾਵਾਂ ਕੁਝ ਜਾਣੀਆਂ ਸਮੱਸਿਆਵਾਂ ਦੇ ਖਾਸ ਹੱਲਾਂ ਦਾ ਵਰਣਨ ਕਰਦੀਆਂ ਹਨ। ਜਦੋਂ ਕਿ ਇੱਕ ਐਲਗੋਰਿਦਮ defiਜੇਕਰ ਹਮੇਸ਼ਾ ਕਾਰਵਾਈਆਂ ਦਾ ਇੱਕ ਸਪਸ਼ਟ ਸਮੂਹ ਹੁੰਦਾ ਹੈ ਜੋ ਇੱਕ ਖਾਸ ਟੀਚਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ, ਇੱਕ ਮਾਡਲ ਇੱਕ ਹੱਲ ਦਾ ਉੱਚ ਪੱਧਰੀ ਵਰਣਨ ਹੁੰਦਾ ਹੈ। ਦੋ ਵੱਖ-ਵੱਖ ਪ੍ਰੋਗਰਾਮਾਂ 'ਤੇ ਲਾਗੂ ਕੀਤੇ ਇੱਕੋ ਮਾਡਲ ਦਾ ਕੋਡ ਵੱਖ-ਵੱਖ ਹੋ ਸਕਦਾ ਹੈ।

ਇੱਕ ਸਮਾਨਤਾ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋਏ, ਅਸੀਂ ਇੱਕ ਰਸੋਈ ਪਕਵਾਨ ਬਾਰੇ ਸੋਚ ਸਕਦੇ ਹਾਂ: ਇੱਕ ਟੀਚਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਦੋਵਾਂ ਵਿੱਚ ਸਪੱਸ਼ਟ ਕਦਮ ਹਨ. ਹਾਲਾਂਕਿ, ਇੱਕ ਮਾਡਲ ਇੱਕ ਪ੍ਰੋਜੈਕਟ ਵਰਗਾ ਹੈ, ਜਿਸਦਾ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਨਤੀਜਾ ਕੀ ਹੈ ਅਤੇ ਇਸ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਕੀ ਹਨ, ਪਰ ਲਾਗੂ ਕਰਨ ਦਾ ਸਹੀ ਕ੍ਰਮ ਸਾਡੇ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਜੋ ਕੋਡ ਲਿਖਦਾ ਹੈ।

ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਕਿਸ ਦਾ ਬਣਿਆ ਹੁੰਦਾ ਹੈ?

ਜ਼ਿਆਦਾਤਰ ਪੈਟਰਨਾਂ ਦਾ ਵਰਣਨ ਬਹੁਤ ਰਸਮੀ ਤੌਰ 'ਤੇ ਕੀਤਾ ਗਿਆ ਹੈ ਤਾਂ ਜੋ ਲੋਕ ਉਨ੍ਹਾਂ ਨੂੰ ਕਈ ਸੰਦਰਭਾਂ ਵਿੱਚ ਦੁਬਾਰਾ ਤਿਆਰ ਕਰ ਸਕਣ। ਆਉ ਹੇਠਾਂ ਉਹਨਾਂ ਤੱਤਾਂ ਨੂੰ ਵੇਖੀਏ ਜੋ ਇੱਕ ਮਾਡਲ ਦੇ ਵਰਣਨ ਵਿੱਚ ਮੌਜੂਦ ਹਨ:

  • ਇਰਾਦਾ ਮਾਡਲ ਦਾ ਸੰਖੇਪ ਰੂਪ ਵਿੱਚ ਸਮੱਸਿਆ ਅਤੇ ਹੱਲ ਦੋਵਾਂ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ।
  • ਪ੍ਰੇਰਣਾ ਅੱਗੇ ਸਮੱਸਿਆ ਅਤੇ ਹੱਲ ਦੀ ਵਿਆਖਿਆ ਕਰਦਾ ਹੈ ਜੋ ਮਾਡਲ ਸੰਭਵ ਬਣਾਉਂਦਾ ਹੈ।
  • ਬਣਤਰ ਕਲਾਸਾਂ ਦੇ ਮਾਡਲ ਦੇ ਹਰੇਕ ਹਿੱਸੇ ਅਤੇ ਉਹ ਕਿਵੇਂ ਸਬੰਧਿਤ ਹਨ, ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
  • ਕੋਡ ਦੀ ਉਦਾਹਰਨ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚੋਂ ਇੱਕ ਵਿੱਚ ਮਾਡਲ ਦੇ ਪਿੱਛੇ ਦੇ ਵਿਚਾਰ ਨੂੰ ਸਮਝਣਾ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ।

ਇਹਨਾਂ ਦੀ ਵਰਤੋਂ ਕਿਉਂ ਕਰੀਏ?

ਇੱਕ ਪ੍ਰੋਗਰਾਮਰ ਡਿਜ਼ਾਈਨ ਪੈਟਰਨਾਂ ਦੀ ਮੌਜੂਦਗੀ ਨੂੰ ਜਾਣੇ ਬਿਨਾਂ ਸੌਫਟਵੇਅਰ ਵਿਕਸਿਤ ਕਰ ਸਕਦਾ ਹੈ। ਬਹੁਤ ਸਾਰੇ ਕਰਦੇ ਹਨ, ਅਤੇ ਇਸ ਕਾਰਨ ਉਹ ਬਿਨਾਂ ਜਾਣੇ ਕੁਝ ਸਕੀਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰਦੇ ਹਨ. ਪਰ ਫਿਰ ਅਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਸਿੱਖਣ ਲਈ ਸਮਾਂ ਕਿਉਂ ਬਤੀਤ ਕਰੀਏ?

  • ਡਿਜ਼ਾਇਨ ਪੈਟਰਨ ਦੀ ਇੱਕ ਕਿੱਟ ਹਨ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਅਤੇ ਟੈਸਟ ਕੀਤੇ ਹੱਲ ਸੌਫਟਵੇਅਰ ਡਿਜ਼ਾਈਨ ਵਿਚ ਆਮ ਸਮੱਸਿਆਵਾਂ ਲਈ. ਭਾਵੇਂ ਤੁਹਾਨੂੰ ਕਦੇ ਵੀ ਇਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਦਾ ਸਾਹਮਣਾ ਨਹੀਂ ਕਰਨਾ ਪੈਂਦਾ, ਪੈਟਰਨਾਂ ਨੂੰ ਜਾਣਨਾ ਅਜੇ ਵੀ ਲਾਭਦਾਇਕ ਹੈ ਕਿਉਂਕਿ ਇਹ ਤੁਹਾਨੂੰ ਸਿਖਾਉਂਦਾ ਹੈ ਕਿ ਆਬਜੈਕਟ-ਅਧਾਰਿਤ ਡਿਜ਼ਾਈਨ ਸਿਧਾਂਤਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹਰ ਕਿਸਮ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕਰਨਾ ਹੈ।
  • ਡਿਜ਼ਾਈਨ ਮਾਡਲ defiਉਹ ਇੱਕ ਸਾਂਝੀ ਭਾਸ਼ਾ ਬਣਾਉਂਦੇ ਹਨ ਜਿਸਦੀ ਵਰਤੋਂ ਤੁਸੀਂ ਅਤੇ ਤੁਹਾਡੀ ਟੀਮ ਵਧੇਰੇ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਸੰਚਾਰ ਕਰਨ ਲਈ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਕਹਿ ਸਕਦੇ ਹੋ, "ਓਹ, ਅਜਿਹਾ ਕਰਨ ਲਈ ਸਿਰਫ਼ ਸਿੰਗਲਟਨ ਦੀ ਵਰਤੋਂ ਕਰੋ," ਅਤੇ ਹਰ ਕੋਈ ਤੁਹਾਡੇ ਸੁਝਾਅ ਦੇ ਪਿੱਛੇ ਵਿਚਾਰ ਨੂੰ ਸਮਝ ਜਾਵੇਗਾ। ਜੇ ਤੁਸੀਂ ਪੈਟਰਨ ਅਤੇ ਇਸਦਾ ਨਾਮ ਜਾਣਦੇ ਹੋ ਤਾਂ ਸਿੰਗਲਟਨ ਕੀ ਹੈ ਇਹ ਦੱਸਣ ਦੀ ਕੋਈ ਲੋੜ ਨਹੀਂ ਹੈ।

ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਦਾ ਵਰਗੀਕਰਨ

ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਗੁੰਝਲਦਾਰਤਾ, ਵੇਰਵੇ ਦੇ ਪੱਧਰ, ਅਤੇ ਡਿਜ਼ਾਈਨ ਕੀਤੇ ਸਿਸਟਮ ਵਿੱਚ ਲਾਗੂ ਹੋਣ ਦੇ ਪੈਮਾਨੇ ਵਿੱਚ ਵੱਖਰੇ ਹੁੰਦੇ ਹਨ।

ਸਮਾਨਤਾ ਨਾਲ, ਅਸੀਂ ਕੁਝ ਟ੍ਰੈਫਿਕ ਲਾਈਟਾਂ ਲਗਾ ਕੇ ਜਾਂ ਪੈਦਲ ਚੱਲਣ ਵਾਲਿਆਂ ਲਈ ਭੂਮੀਗਤ ਰਸਤਿਆਂ ਦੇ ਨਾਲ ਇੱਕ ਪੂਰਾ ਬਹੁ-ਪੱਧਰੀ ਇੰਟਰਚੇਂਜ ਬਣਾ ਕੇ ਇੱਕ ਚੌਰਾਹੇ ਨੂੰ ਸੁਰੱਖਿਅਤ ਬਣਾ ਸਕਦੇ ਹਾਂ।

ਸਭ ਤੋਂ ਬੁਨਿਆਦੀ, ਹੇਠਲੇ ਪੱਧਰ ਦੇ ਮਾਡਲਾਂ ਨੂੰ ਅਕਸਰ ਕਿਹਾ ਜਾਂਦਾ ਹੈ ਮੁਹਾਵਰੇ . ਉਹ ਆਮ ਤੌਰ 'ਤੇ ਸਿਰਫ ਇੱਕ ਸਿੰਗਲ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ 'ਤੇ ਲਾਗੂ ਹੁੰਦੇ ਹਨ।

ਸਭ ਤੋਂ ਵੱਧ ਯੂਨੀਵਰਸਲ ਅਤੇ ਉੱਚ ਪੱਧਰੀ ਮਾਡਲ ਹਨ ਆਰਕੀਟੈਕਚਰਲ ਮਾਡਲ . ਡਿਵੈਲਪਰ ਇਹਨਾਂ ਪੈਟਰਨਾਂ ਨੂੰ ਲੱਗਭਗ ਕਿਸੇ ਵੀ ਭਾਸ਼ਾ ਵਿੱਚ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹਨ। ਦੂਜੇ ਪੈਟਰਨਾਂ ਦੇ ਉਲਟ, ਉਹਨਾਂ ਦੀ ਵਰਤੋਂ ਪੂਰੇ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਆਰਕੀਟੈਕਚਰ ਨੂੰ ਡਿਜ਼ਾਈਨ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।

ਇਸ ਤੋਂ ਇਲਾਵਾ, ਸਾਰੇ ਮਾਡਲਾਂ ਨੂੰ ਉਹਨਾਂ ਦੇ ਅਨੁਸਾਰ ਸ਼੍ਰੇਣੀਬੱਧ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਜਾਂ ਮਕਸਦ. ਤਿੰਨ ਮੁੱਖ ਸ਼੍ਰੇਣੀਆਂ ਹਨ:

ਇਨੋਵੇਸ਼ਨ ਨਿਊਜ਼ਲੈਟਰ
ਨਵੀਨਤਾ ਬਾਰੇ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਖ਼ਬਰਾਂ ਨੂੰ ਨਾ ਭੁੱਲੋ। ਉਹਨਾਂ ਨੂੰ ਈਮੇਲ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਾਈਨ ਅੱਪ ਕਰੋ।
  • ਰਚਨਾਤਮਕ ਮਾਡਲ ਉਹ ਵਸਤੂ ਬਣਾਉਣ ਦੀ ਵਿਧੀ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ ਜੋ ਮੌਜੂਦਾ ਕੋਡ ਦੀ ਲਚਕਤਾ ਅਤੇ ਮੁੜ ਵਰਤੋਂ ਨੂੰ ਵਧਾਉਂਦੇ ਹਨ।
  • ਢਾਂਚਾਗਤ ਮਾਡਲ ਉਹ ਦੱਸਦੇ ਹਨ ਕਿ ਆਬਜੈਕਟ ਅਤੇ ਕਲਾਸਾਂ ਨੂੰ ਵੱਡੇ ਢਾਂਚੇ ਵਿੱਚ ਕਿਵੇਂ ਇਕੱਠਾ ਕਰਨਾ ਹੈ, ਇਹਨਾਂ ਬਣਤਰਾਂ ਨੂੰ ਲਚਕਦਾਰ ਅਤੇ ਕੁਸ਼ਲ ਰੱਖਦੇ ਹੋਏ।
  • ਵਿਹਾਰਕ ਮਾਡਲ ਉਹ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਸੰਚਾਰ ਅਤੇ ਵਸਤੂਆਂ ਦੇ ਵਿਚਕਾਰ ਜ਼ਿੰਮੇਵਾਰੀਆਂ ਦੀ ਨਿਯੁਕਤੀ ਨਾਲ ਨਜਿੱਠਦੇ ਹਨ।

Laravel ਵਿੱਚ ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਦੀ ਉਦਾਹਰਨ: ਨਕਾਬ

ਚਿਹਰਾ ਇੱਕ ਢਾਂਚਾਗਤ ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਹੈ ਜੋ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ, ਫਰੇਮਵਰਕ, ਜਾਂ ਕਲਾਸਾਂ ਦੇ ਕਿਸੇ ਹੋਰ ਗੁੰਝਲਦਾਰ ਸੈੱਟ ਲਈ ਇੱਕ ਸਰਲ ਇੰਟਰਫੇਸ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

ਸਮੱਸਿਆ

ਚਲੋ ਮੰਨ ਲਓ ਕਿ ਸਾਨੂੰ ਸੌਫਟਵੇਅਰ ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ, ਇੱਕ ਵਧੀਆ ਲਾਇਬ੍ਰੇਰੀ ਜਾਂ ਫਰੇਮਵਰਕ ਨਾਲ ਸਬੰਧਤ ਵਸਤੂਆਂ ਦੇ ਇੱਕ ਵੱਡੇ ਸਮੂਹ ਦੇ ਅਧਾਰ ਤੇ। ਆਮ ਤੌਰ 'ਤੇ, ਸਾਨੂੰ ਇਹਨਾਂ ਸਾਰੀਆਂ ਵਸਤੂਆਂ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ, ਨਿਰਭਰਤਾ ਦਾ ਪਤਾ ਲਗਾਉਣਾ, ਸਹੀ ਕ੍ਰਮ ਵਿੱਚ ਢੰਗਾਂ ਨੂੰ ਚਲਾਉਣਾ, ਆਦਿ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।

ਨਤੀਜੇ ਵਜੋਂ, ਕਲਾਸਾਂ ਦਾ ਵਪਾਰਕ ਤਰਕ ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕਲਾਸਾਂ ਦੇ ਲਾਗੂਕਰਨ ਵੇਰਵਿਆਂ ਨਾਲ ਮਜ਼ਬੂਤੀ ਨਾਲ ਜੁੜ ਜਾਵੇਗਾ, ਜਿਸ ਨਾਲ ਉਹਨਾਂ ਨੂੰ ਸਮਝਣਾ ਅਤੇ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੋ ਜਾਵੇਗਾ।

ਦਾ ਹੱਲ

ਉਨਾ facade ਇੱਕ ਕਲਾਸ ਹੈ ਜੋ ਇੱਕ ਗੁੰਝਲਦਾਰ ਸਬ-ਸਿਸਟਮ ਨੂੰ ਇੱਕ ਸਧਾਰਨ ਇੰਟਰਫੇਸ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ ਜਿਸ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਹਿਲਾਉਣ ਵਾਲੇ ਹਿੱਸੇ ਹੁੰਦੇ ਹਨ। ਏ facade ਸਬ-ਸਿਸਟਮ ਨਾਲ ਸਿੱਧੇ ਕੰਮ ਕਰਨ ਦੀ ਤੁਲਨਾ ਵਿੱਚ ਸੀਮਤ ਕਾਰਜਕੁਸ਼ਲਤਾ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇਸ ਵਿੱਚ ਸਿਰਫ਼ ਉਹ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ ਜਿਨ੍ਹਾਂ ਦੀ ਗਾਹਕ ਅਸਲ ਵਿੱਚ ਪਰਵਾਹ ਕਰਦੇ ਹਨ।

ਇਕ ਹੈ facade ਇਹ ਉਦੋਂ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਸਾਨੂੰ ਐਪ ਨੂੰ ਇੱਕ ਆਧੁਨਿਕ ਲਾਇਬ੍ਰੇਰੀ ਨਾਲ ਜੋੜਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਜਿਸ ਵਿੱਚ ਦਰਜਨਾਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਹੁੰਦੀਆਂ ਹਨ, ਪਰ ਸਾਨੂੰ ਇਸਦੀ ਕਾਰਜਸ਼ੀਲਤਾ ਦੇ ਇੱਕ ਛੋਟੇ ਜਿਹੇ ਹਿੱਸੇ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

ਉਦਾਹਰਨ ਲਈ, ਇੱਕ ਐਪ ਜੋ ਬਿੱਲੀਆਂ ਦੇ ਨਾਲ ਛੋਟੇ ਮਜ਼ਾਕੀਆ ਵੀਡੀਓ ਸੋਸ਼ਲ ਮੀਡੀਆ 'ਤੇ ਅੱਪਲੋਡ ਕਰਦੀ ਹੈ, ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ ਇੱਕ ਪੇਸ਼ੇਵਰ ਵੀਡੀਓ ਪਰਿਵਰਤਨ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੀ ਹੈ। ਹਾਲਾਂਕਿ, ਸਾਨੂੰ ਅਸਲ ਵਿੱਚ ਸਿਰਫ਼ ਇੱਕ ਵਿਧੀ ਵਾਲੀ ਇੱਕ ਕਲਾਸ ਦੀ ਲੋੜ ਹੈ encode(filename, format). ਅਜਿਹੀ ਕਲਾਸ ਬਣਾਉਣ ਅਤੇ ਇਸਨੂੰ ਵੀਡੀਓ ਪਰਿਵਰਤਨ ਲਾਇਬ੍ਰੇਰੀ ਨਾਲ ਜੋੜਨ ਤੋਂ ਬਾਅਦ, ਸਾਡੇ ਕੋਲ ਸਾਡੀ ਪਹਿਲੀ ਹੋਵੇਗੀ facade.

ਉਦਾਹਰਨ ਲਈ, ਇੱਕ ਕਾਲ ਸੈਂਟਰ ਦਾ ਟੈਲੀਫੋਨ ਆਪਰੇਟਰ ਏ facade. ਵਾਸਤਵ ਵਿੱਚ, ਜਦੋਂ ਅਸੀਂ ਇੱਕ ਟੈਲੀਫੋਨ ਆਰਡਰ ਦੇਣ ਲਈ ਇੱਕ ਸਟੋਰ ਦੀ ਟੈਲੀਫੋਨ ਸੇਵਾ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਾਂ, ਇੱਕ ਓਪਰੇਟਰ ਸਾਡਾ ਹੁੰਦਾ ਹੈ facade ਸਟੋਰ ਦੀਆਂ ਸਾਰੀਆਂ ਸੇਵਾਵਾਂ ਅਤੇ ਵਿਭਾਗਾਂ ਵੱਲ। ਆਪਰੇਟਰ ਆਰਡਰਿੰਗ ਸਿਸਟਮ, ਭੁਗਤਾਨ ਗੇਟਵੇਅ ਅਤੇ ਵੱਖ-ਵੱਖ ਡਿਲਿਵਰੀ ਸੇਵਾਵਾਂ ਲਈ ਇੱਕ ਸਧਾਰਨ ਵੌਇਸ ਇੰਟਰਫੇਸ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

PHP ਵਿੱਚ ਅਸਲ ਉਦਾਹਰਨ

ਬਾਰੇ ਸੋਚੋ ਚਿਹਰਾ ਕੁਝ ਗੁੰਝਲਦਾਰ ਸਬ-ਸਿਸਟਮ ਲਈ ਇੱਕ ਸਧਾਰਨ ਅਡਾਪਟਰ ਦੇ ਤੌਰ ਤੇ। Facade ਇੱਕ ਸਿੰਗਲ ਕਲਾਸ ਵਿੱਚ ਜਟਿਲਤਾ ਨੂੰ ਅਲੱਗ ਕਰਦਾ ਹੈ ਅਤੇ ਦੂਜੇ ਐਪਲੀਕੇਸ਼ਨ ਕੋਡ ਨੂੰ ਸਧਾਰਨ ਇੰਟਰਫੇਸ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।

ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, Facade ਕਲਾਇੰਟ ਕੋਡ ਤੋਂ YouTube API ਅਤੇ FFmpeg ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਗੁੰਝਲਤਾ ਨੂੰ ਲੁਕਾਉਂਦਾ ਹੈ। ਦਰਜਨਾਂ ਕਲਾਸਾਂ ਨਾਲ ਕੰਮ ਕਰਨ ਦੀ ਬਜਾਏ, ਕਲਾਇੰਟ ਫੈਕੇਡ 'ਤੇ ਇੱਕ ਸਧਾਰਨ ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ.

<?php

namespace RefactoringGuru\Facade\RealWorld;

/**
 * The Facade provides a single method for downloading videos from YouTube. This
 * method hides all the complexity of the PHP network layer, YouTube API and the
 * video conversion library (FFmpeg).
 */
class YouTubeDownloader
{
    protected $youtube;
    protected $ffmpeg;

    /**
     * It is handy when the Facade can manage the lifecycle of the subsystem it
     * uses.
     */
    public function __construct(string $youtubeApiKey)
    {
        $this->youtube = new YouTube($youtubeApiKey);
        $this->ffmpeg = new FFMpeg();
    }

    /**
     * The Facade provides a simple method for downloading video and encoding it
     * to a target format (for the sake of simplicity, the real-world code is
     * commented-out).
     */
    public function downloadVideo(string $url): void
    {
        echo "Fetching video metadata from youtube...\n";
        // $title = $this->youtube->fetchVideo($url)->getTitle();
        echo "Saving video file to a temporary file...\n";
        // $this->youtube->saveAs($url, "video.mpg");

        echo "Processing source video...\n";
        // $video = $this->ffmpeg->open('video.mpg');
        echo "Normalizing and resizing the video to smaller dimensions...\n";
        // $video
        //     ->filters()
        //     ->resize(new FFMpeg\Coordinate\Dimension(320, 240))
        //     ->synchronize();
        echo "Capturing preview image...\n";
        // $video
        //     ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
        //     ->save($title . 'frame.jpg');
        echo "Saving video in target formats...\n";
        // $video
        //     ->save(new FFMpeg\Format\Video\X264(), $title . '.mp4')
        //     ->save(new FFMpeg\Format\Video\WMV(), $title . '.wmv')
        //     ->save(new FFMpeg\Format\Video\WebM(), $title . '.webm');
        echo "Done!\n";
    }
}

/**
 * The YouTube API subsystem.
 */
class YouTube
{
    public function fetchVideo(): string { /* ... */ }

    public function saveAs(string $path): void { /* ... */ }

    // ...more methods and classes...
}

/**
 * The FFmpeg subsystem (a complex video/audio conversion library).
 */
class FFMpeg
{
    public static function create(): FFMpeg { /* ... */ }

    public function open(string $video): void { /* ... */ }

    // ...more methods and classes... RU: ...дополнительные методы и классы...
}

class FFMpegVideo
{
    public function filters(): self { /* ... */ }

    public function resize(): self { /* ... */ }

    public function synchronize(): self { /* ... */ }

    public function frame(): self { /* ... */ }

    public function save(string $path): self { /* ... */ }

    // ...more methods and classes... RU: ...дополнительные методы и классы...
}


/**
 * The client code does not depend on any subsystem's classes. Any changes
 * inside the subsystem's code won't affect the client code. You will only need
 * to update the Facade.
 */
function clientCode(YouTubeDownloader $facade)
{
    // ...

    $facade->downloadVideo("https://www.youtube.com/watch?v=QH2-TGUlwu4");

    // ...
}

$facade = new YouTubeDownloader("APIKEY-XXXXXXXXX");
clientCode($facade);

Ercole Palmeri

ਇਨੋਵੇਸ਼ਨ ਨਿਊਜ਼ਲੈਟਰ
ਨਵੀਨਤਾ ਬਾਰੇ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਖ਼ਬਰਾਂ ਨੂੰ ਨਾ ਭੁੱਲੋ। ਉਹਨਾਂ ਨੂੰ ਈਮੇਲ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਾਈਨ ਅੱਪ ਕਰੋ।

ਤਾਜ਼ਾ ਲੇਖ

Veeam ਵਿੱਚ ਸੁਰੱਖਿਆ ਤੋਂ ਲੈ ਕੇ ਜਵਾਬ ਅਤੇ ਰਿਕਵਰੀ ਤੱਕ, ਰੈਨਸਮਵੇਅਰ ਲਈ ਸਭ ਤੋਂ ਵੱਧ ਵਿਆਪਕ ਸਮਰਥਨ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ

Veeam ਦੁਆਰਾ Coveware ਸਾਈਬਰ ਜ਼ਬਰਦਸਤੀ ਘਟਨਾ ਪ੍ਰਤੀਕਿਰਿਆ ਸੇਵਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਨਾ ਜਾਰੀ ਰੱਖੇਗਾ। ਕੋਵਵੇਅਰ ਫੋਰੈਂਸਿਕ ਅਤੇ ਉਪਚਾਰ ਸਮਰੱਥਾਵਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰੇਗਾ...

23 ਅਪ੍ਰੈਲ 2024

ਹਰੀ ਅਤੇ ਡਿਜੀਟਲ ਕ੍ਰਾਂਤੀ: ਕਿਵੇਂ ਭਵਿੱਖਬਾਣੀ ਰੱਖ-ਰਖਾਅ ਤੇਲ ਅਤੇ ਗੈਸ ਉਦਯੋਗ ਨੂੰ ਬਦਲ ਰਿਹਾ ਹੈ

ਪੂਰਵ-ਅਨੁਮਾਨਤ ਰੱਖ-ਰਖਾਅ ਪਲਾਂਟ ਪ੍ਰਬੰਧਨ ਲਈ ਇੱਕ ਨਵੀਨਤਾਕਾਰੀ ਅਤੇ ਕਿਰਿਆਸ਼ੀਲ ਪਹੁੰਚ ਦੇ ਨਾਲ, ਤੇਲ ਅਤੇ ਗੈਸ ਸੈਕਟਰ ਵਿੱਚ ਕ੍ਰਾਂਤੀ ਲਿਆ ਰਹੀ ਹੈ।…

22 ਅਪ੍ਰੈਲ 2024

ਯੂਕੇ ਐਂਟੀਟਰਸਟ ਰੈਗੂਲੇਟਰ ਨੇ GenAI ਉੱਤੇ ਬਿਗਟੈਕ ਅਲਾਰਮ ਵਧਾਇਆ ਹੈ

UK CMA ਨੇ ਨਕਲੀ ਖੁਫੀਆ ਮਾਰਕੀਟ ਵਿੱਚ ਬਿਗ ਟੈਕ ਦੇ ਵਿਵਹਾਰ ਬਾਰੇ ਇੱਕ ਚੇਤਾਵਨੀ ਜਾਰੀ ਕੀਤੀ ਹੈ. ਉੱਥੇ…

18 ਅਪ੍ਰੈਲ 2024

ਕਾਸਾ ਗ੍ਰੀਨ: ਇਟਲੀ ਵਿੱਚ ਇੱਕ ਟਿਕਾਊ ਭਵਿੱਖ ਲਈ ਊਰਜਾ ਕ੍ਰਾਂਤੀ

"ਕੇਸ ਗ੍ਰੀਨ" ਫਰਮਾਨ, ਯੂਰਪੀਅਨ ਯੂਨੀਅਨ ਦੁਆਰਾ ਇਮਾਰਤਾਂ ਦੀ ਊਰਜਾ ਕੁਸ਼ਲਤਾ ਨੂੰ ਵਧਾਉਣ ਲਈ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ, ਨੇ ਆਪਣੀ ਵਿਧਾਨਕ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਇਸ ਦੇ ਨਾਲ ਸਮਾਪਤ ਕੀਤਾ ਹੈ ...

18 ਅਪ੍ਰੈਲ 2024

ਆਪਣੀ ਭਾਸ਼ਾ ਵਿੱਚ ਇਨੋਵੇਸ਼ਨ ਪੜ੍ਹੋ

ਇਨੋਵੇਸ਼ਨ ਨਿਊਜ਼ਲੈਟਰ
ਨਵੀਨਤਾ ਬਾਰੇ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਖ਼ਬਰਾਂ ਨੂੰ ਨਾ ਭੁੱਲੋ। ਉਹਨਾਂ ਨੂੰ ਈਮੇਲ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਾਈਨ ਅੱਪ ਕਰੋ।

ਸਾਡੇ ਨਾਲ ਪਾਲਣਾ