গভীর থেকে বহুতে সম্পর্ক পরিচালনার জন্য কি কোনও নকশার প্যাটার্ন রয়েছে?


10

আমি বেশ কয়েকটি অ্যাপ্লিকেশন নিয়ে কাজ করে এসেছি এই ডেটা প্যাটার্নটি নির্ধারণ করতে আমার সমস্যা হচ্ছে।

নিহিত:

  1. একটি অবজেক্টের ধরণ যা অনেকগুলি বস্তু নিজেই গঠিত
  2. একটি দ্বিতীয় অবজেক্টের ধরণ, যেখানে প্রতিটি ইভেন্টের প্রথম অবজেক্টের 'অনেকগুলি' থাকে
  3. এবং, প্রথম অবজেক্টের প্রতিটি সাব-অবজেক্টের প্রতিটি অ্যাসোসিয়েশন প্রতি দ্বিতীয় অবজেক্ট টাইপের প্রতি সংশোধনযোগ্য।

একটি সাধারণ উদাহরণ হতে পারে:

  1. পাঠ্যক্রমের একটি সেট সমন্বিত একটি প্রোগ্রামিং কোর্স
  2. পাঠগুলি একটি সেট অ্যাসাইনমেন্ট নিয়ে গঠিত।
  3. একটি কোর্স একটি ছাত্র নিয়োগ করা যেতে পারে।
  4. যাইহোক, একবার কোনও পাঠ্যক্রম শিক্ষার্থীর জন্য নির্ধারিত হয়ে গেলে প্রতিটি পাঠ এবং / অথবা অ্যাসাইনমেন্টটি সেই শিক্ষার্থীর সাথে অপসারণ ও সংযোজন সহ কাস্টমাইজ করা যায়, যেখানে মূল কোর্সটি অপরিণয়যোগ্য হতে পারে।

আমার সমাধানগুলিতে, এর ফলাফল কী:

কোনও শিক্ষার্থীর জন্য একটি কোর্স নিয়োগের সময়, কোর্সটি মেমরিতে লোড হয়। তারপরে প্রতিটি উপ-অবজেক্টের জন্য, একটি শিক্ষার্থী / সাব-অবজেক্ট রিলেশন অবজেক্ট উপযুক্ত মেটাডেটা দিয়ে তৈরি করা হয়। মূলত, প্রয়োজনীয় কাস্টমাইজযোগ্য অবজেক্ট তৈরি করার জন্য আমি আসল অবজেক্টটি টেম্পলেট হিসাবে ব্যবহার করছি।

সাব-অবজেক্টগুলি আরও জটিল এবং সংখ্যাযুক্ত হয়ে যাওয়ার ফলে এটি বিপুল পরিমাণে ডেটা তৈরি করে। আমি ভাবছি যে এই ডেটা প্যাটার্নটি ম্যানিপুলেট করার জন্য প্রয়োজনীয় যুক্তি / জটিলতার পরিমাণ হ্রাস করার জন্য কিছু অপ্টিমাইজেশন বা প্যাটার্ন রয়েছে কিনা।


2
আপনি কি "ডেটার পরিমাণ হ্রাস" করতে চান? প্রয়োজনীয় আচরণ বাস্তবায়নের জন্য যে "লিপযুক্ত লেখার প্রয়োজন তা" নন-তুচ্ছ কোড এবং যুক্তির পরিমাণ হ্রাস করার "উপায়গুলি সন্ধান করছেন? (আমি লক্ষ্য করেছি যে ডেটা চলমান পরিচালনার জন্য একটি ডাটাবেসের অনুরূপ সম্পর্কিত ডেটা কাঠামো প্রয়োজন))
রিওং

@ রোং হ্যাঁ, "তুচ্ছ কোড এবং যুক্তির পরিমাণ হ্রাস [আইং] করা" আমার শেষ লক্ষ্য। আমার কাছে, এর অর্থ কোনও উপায়ে ডেটা জটিলতা হ্রাস করা, তবে এটি প্রয়োজনীয়তার প্রয়োজন নয়। এটি এমন একটি সাধারণ ডেটা প্যাটার্নে পরিণত হয়েছে যে এটি পরিচালনা করার কিছু সহজ উপায় থাকলে আমি অবাক হয়েছি।
নিকোলাস পিকারিং

1
নীতিগতভাবে এটি একটি মি: এন সম্পর্কের উন্নত সংস্করণ। Complex জটিল অবজেক্ট সম্পর্ক কীভাবে পরিচালনা করবেন like এর মতো একটি শিরোনাম সম্পর্কে কী?
থমাস জাঙ্ক

1
বিপুল পরিমাণ তথ্য ডেটাতে জটিলতার বিশাল স্তর হিসাবে একই নয়। আপনি যা নির্মাণ করছেন তা পরিচালনা করতে অসুবিধা সম্ভবত ভলিউমের চেয়ে জটিলতার সাথে বাড়বে।
ওয়াল্টার মিট্টি

1
মজাদার. আমি বেশ কয়েকটি অ্যাপ্লিকেশনগুলিতে এই প্যাটার্নটিতে কাজ করেছি, তবে এটি এটির একটি প্যাটার্নের আগে কখনও স্পট করে না। এই জাতীয় ডেটা পরিচালনা করার সহজ উপায়গুলি দেখতেও পছন্দ করবে।
জুলে

উত্তর:


6

আপনার যা প্রয়োজন তার উপর নির্ভর করে আমি কয়েকটি বিকল্প দেখতে পাচ্ছি: (1) যদি প্রচলিত অ্যালগরিদম অনুসরণ করে এমন অনেকগুলি অনন্য দৃষ্টান্ত দেখা যায়, (2) যদি অনেকগুলি অনুরূপ অবজেক্ট থাকে বা আপনি রান-টাইমে অবজেক্ট তৈরি করেন এবং (3) যদি আপনি চলমান অবস্থায় অবজেক্টের আচরণকে গতিশীল পরিবর্তন করতে চান। দ্রষ্টব্য: আমি এখানে যে সমস্ত নিদর্শনগুলি উল্লেখ করেছি তার সবগুলি আপনি একত্রিত করতে পারেন, প্রয়োজন হলে।

  1. যদি প্রতিটি "দ্বিতীয় বস্তুর ধরণ" স্বতন্ত্র তবে আচরণের অনুরূপ প্যাটার্ন অনুসরণ করে আপনি টেম্পলেট প্যাটার্ন ব্যবহার করতে পারেন । মনে হচ্ছে আপনি এটি করছেন। তবে এটি সুস্পষ্ট করতে আপনার বিমূর্ত, বেস শ্রেণিতে সাধারণ অ্যালগরিদম প্রোগ্রাম করা আছে; এই অ্যালগরিদমের কয়েকটি পদক্ষেপ উদ্ভূত শ্রেণিতে প্রয়োগ করা হয়।

  2. আপনি যদি অনেকগুলি অবজেক্ট তৈরি করেন বা রান-টাইমে অবজেক্ট তৈরি করা আপনার পক্ষে গুরুত্বপূর্ণ, আপনি ফ্যাক্টরি প্যাটার্ন ব্যবহার করতে পারেন ।

  3. এবং যদি আপনি গতিশীলভাবে আচরণ পরিবর্তন করতে চান তবে স্ট্যাটগি প্যাটার্ন কাজ করতে পারে। উদাহরণস্বরূপ, যদি নিয়মিত পাঠ্যক্রমের কোনও শিক্ষার্থী বিশেষ প্রয়োজন বা ত্বরিত প্রোগ্রামে যাওয়ার সিদ্ধান্ত নেওয়া হয়। এটি পাঠ্যক্রমের একটি বেস-শ্রেণীর প্রতিনিধিত্ব করবে এমন একটি সামগ্রীর "ছাত্র" রচনা করে কাজ করে। পাঠ্যক্রমটি শিক্ষার্থীর নির্মানের (যেটি অদ্ভুত মনে হয়) একটি উত্সযুক্ত পাঠ্যক্রমকে বরাদ্দ করা হত এবং পরে অন্য একটি উত্সযুক্ত পাঠ্যক্রমে পুনরায় নিয়োগ করা যেতে পারে।

(শুধু এফওয়াইআই, যদি (3) সি ++ সহ কৌশল প্যাটার্ন ব্যবহার করা হয় তবে আপনাকে রচনাটির মূল্যায়ন করতে হবে।)

আপনার অবজেক্টস এবং দ্বিতীয় অবজেক্টগুলিকে সঞ্চয় করতে, এটি আইট্রেটার প্যাটার্ন বিবেচনা করা উপযুক্ত (তাদের মধ্য দিয়ে চক্র যোগ করা, মোছা, সাজানো ইত্যাদি) considering

একটি ভাল রেফারেন্স হ্যাড ফার্স্ট ডিজাইন প্যাটার্নস , যা আমি উল্লিখিত নিদর্শনগুলি এবং তাদের বাস্তবায়ন কভার করে। তারা জাভাতে কাজ করে।


0

ডেটা-স্টোর বা অধ্যবসায়ের উপস্থিতিতে বিশ্বাস করা আমার পক্ষে কঠিন হয়ে পড়েছে যে রান-টাইমে কোনও নির্দিষ্ট সময়ে আপনার এই ধরণের গভীরতার সাথে জিনিস থাকতে হবে to এটি কি CRUD GUI এর জন্য? যদি তা হয় তবে আমি শুরু থেকে আপনার পদ্ধতির পরিবর্তন করার পরামর্শ দেব। অর্থাৎ,

উপকাঠামো শো শিক্ষার্থীর জন্য প্রয়োজনীয় চিহ্নিত করুন, এবং statefully ডিবি তার উৎপত্তি সূচক ফিরে সঞ্চয় করবে এবং statelessly যে আপডেট করতে, অথবা দেখতে ও ব্যাকএন্ড ডিবি থেকে যাচ্ছে।


আমি নিশ্চিত না যে আমি আপনার পরামর্শটি বুঝতে পেরেছি। আমার একটি খালি সাবোবজেক্ট তৈরি করা উচিত, তারপরে ব্যবহারকারীকে অন্য ফর্মটিতে বাধ্য করুন যা তাদের সাবোবজেক্টটি সংশোধন করার অনুমতি দেয়?
নিকোলাস পিকিংয়ের জন্য

আমি পরামর্শ দিচ্ছি যে নিজের মধ্যে থাকা বস্তুগুলি খুব বেশি না সম্পাদন করে, যদি আপনি যা করছেন সমস্ত কিছুই তাদের বিষয়বস্তু এবং একটি ব্যাক-এন্ড ডাটাবেসের মধ্যে স্টেটলেস লেনদেন হয়। যদি এটি হয় তবে এগুলি সরিয়ে ফেলুন এবং ক্লায়েন্টের মুখোমুখি হওয়া ডেটাগুলির জন্য কেবল লেনদেন করুন।
জন পি। ফেল্টজ

সম্পাদনা: এর অর্থ এই হতে পারে যে সেই নির্দিষ্ট ডেটা লেনদেনের জন্য ক্যাপচারের জন্য অবজেক্ট তৈরি করা- যদি আপনি ওআরএম-এর পক্ষপাতদুষ্ট হন সেই ক্ষেত্রে তাদের সুবিধার কারণে।
জন পি। ফেল্টজ

আমি যদি ভুল বোঝাবুঝি না করি, প্রক্রিয়া সম্পর্কে কিছুই রাষ্ট্রবিহীন করা যায় বলে আমি মনে করি না। এটি সমস্ত ব্যবহারকারীর ক্রিয়া প্রসঙ্গে নির্ভর করে। যখন কোনও ব্যবহারকারী কোনও প্রাথমিক অবজেক্ট তৈরি করেন, তারা আশা করেন যে তাত্ক্ষণিকভাবে সংশোধন করার জন্য বিকল্পটি উপলব্ধ হবে।
নিকোলাস পিকিংয়ের জন্য

-1

প্রতিটি শিক্ষার্থীর জন্য একটি কাস্টমাইজড কোর্স যেখানে মূল কোর্সটি অপরিণয়যোগ্য তা বোঝায় যে মূল কোর্সটি কেবল একটি "ডিফল্ট" রেফারেন্স। আমি যা করবো তা হ'ল কাস্টমাইজডকোর্স (বা তাদের একটি তালিকা) নামে একটি ক্লাস তৈরি করা এবং এটি একটি (বা তার একটি তালিকা) একটি শিক্ষার্থীর সম্পত্তি হিসাবে। কাস্টমাইজডকোর্সে "রেফারেন্টাল" ব্যবহারের জন্য মূল কোর্সে একটি উল্লেখ থাকতে পারে তবে মূল কাজ এবং ডেটা কাস্টমাইজডকোর্সে থাকবে itself


ডাউনভোটার কি মন্তব্য করবেন?
frezq

আমি ডাউনওয়েট করি নি (আমি ওপি), তবে মনে হচ্ছে আপনি ইতিমধ্যে অন্য উত্তরে বর্ণিত টেম্পলেট বা কৌশল প্যাটার্নটি বর্ণনা করার চেষ্টা করছেন।
নিকোলাস পিকিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.