আমি একটি » ইমেজপ্রসেসর create (বা যে কোনও নামই আপনার প্রকল্পের জন্য উপযুক্ত) এবং একটি কনফিগারেশন অবজেক্ট প্রসেস কনফিগারেশন তৈরি করব , যা সমস্ত প্রয়োজনীয় পরামিতি ধারণ করে।
ImageProcessor p = new ImageProcessor();
ProcessConfiguration config = new processConfiguration().setTranslateX(100)
.setTranslateY(100)
.setRotationAngle(45);
p.process(image, config);
চিত্রপ্রসেসরের অভ্যন্তরে আপনি পুরো মেথডের পিছনে পুরো প্রক্রিয়াটি আবদ্ধ করেন process()
public class ImageProcessor {
public Image process(Image i, ProcessConfiguration c){
Image processedImage=i.getCopy();
shift(processedImage, c);
rotate(processedImage, c);
return processedImage;
}
private void rotate(Image i, ProcessConfiguration c) {
//rotate
}
private void shift(Image i, ProcessConfiguration c) {
//shift
}
}
এই পদ্ধতি সঠিক অনুক্রমে রূপান্তরমূলক পদ্ধতির কল shift()
, rotate()
। প্রতিটি পদ্ধতি পাস হওয়া প্রক্রিয়া কনফিগারেশন থেকে উপযুক্ত পরামিতি পায় ।
public class ProcessConfiguration {
private int translateX;
private int rotationAngle;
public int getRotationAngle() {
return rotationAngle;
}
public ProcessConfiguration setRotationAngle(int rotationAngle){
this.rotationAngle=rotationAngle;
return this;
}
public int getTranslateY() {
return translateY;
}
public ProcessConfiguration setTranslateY(int translateY) {
this.translateY = translateY;
return this;
}
public int getTranslateX() {
return translateX;
}
public ProcessConfiguration setTranslateX(int translateX) {
this.translateX = translateX;
return this;
}
private int translateY;
}
আমি তরল ইন্টারফেস ব্যবহার করেছি
public ProcessConfiguration setRotationAngle(int rotationAngle){
this.rotationAngle=rotationAngle;
return this;
}
যা নিফটি আরম্ভের অনুমতি দেয় (উপরে দেখানো হয়েছে)।
সুস্পষ্ট সুবিধা, একটি বস্তুতে প্রয়োজনীয় পরামিতিগুলি encapsulating। আপনার পদ্ধতির স্বাক্ষরগুলি পঠনযোগ্য হয়ে উঠেছে:
private void shift(Image i, ProcessConfiguration c)
এটি কোনও চিত্র স্থানান্তর করার বিষয়ে এবং বিস্তারিত পরামিতিগুলি কোনওভাবে কনফিগার করা হয়েছে ।
বিকল্পভাবে, আপনি একটি প্রসেসিং পাইপলাইন তৈরি করতে পারেন :
public class ProcessingPipeLine {
Image i;
public ProcessingPipeLine(Image i){
this.i=i;
};
public ProcessingPipeLine shift(Coordinates c){
shiftImage(c);
return this;
}
public ProcessingPipeLine rotate(int a){
rotateImage(a);
return this;
}
public Image getResultingImage(){
return i;
}
private void rotateImage(int angle) {
//shift
}
private void shiftImage(Coordinates c) {
//shift
}
}
কোনও পদ্ধতির কাছে কোনও মেথড কল এ processImage
জাতীয় পাইপলাইনটি তাত্ক্ষণিকভাবে তৈরি করে এবং কী এবং কোন ক্রম সম্পন্ন হয় তা স্বচ্ছ করে তোলে: শিফট , ঘোরান
public Image processImage(Image i, ProcessConfiguration c){
Image processedImage=i.getCopy();
processedImage=new ProcessingPipeLine(processedImage)
.shift(c.getCoordinates())
.rotate(c.getRotationAngle())
.getResultingImage();
return processedImage;
}