Wednesday, June 09, 2010

Using inheritance with fluent interfaces: get this

Recently I had a situation where I needed to implement Joshua Bloch's Builder pattern (see Effective Java, item 2) over a hierarchy of Java domain objects. Similar problems would arise when building other types of fluent interface, which commonly "return this" from each method in order to support method chaining. Creating a working solution presented some interesting challenges!

Without going into too many details, the fluent Builder pattern is needed in languages without named arguments and default arguments, like Java, in order to avoid long lists of constructor parameters, or a bunch of setters on the object (which may be immutable). For example:

public class X {
protected int foo;
protected int bar;

public static class Builder {
private X x = new X();

public Builder withFoo( int foo ) {
x.foo = foo; return this;
}
public Builder withBar( int bar ) {
x.bar = bar; return this;
}
public X build() { return x; }
}

protected X() {}

public int getFoo() { return foo; }
public int getBar() { return bar; }
}

You would then use this code as follows:

X x = new X.Builder().withFoo( 1 ).withBar( 2 ).build();

Obviously, for a class with only two instance variables, this pattern doesn't make much sense -- you'd just use a constructor. But for domain objects with lots more than two instance variables, or with subclasses that may add more than two, it makes plenty of sense.

However, this becomes more challenging when dealing with objects that use inheritance. In the project I'm working on, we had a number of domain objects that were (legitimately) using inheritance. The trouble is that the builder pattern doesn't particularly handle this well as it stands.

The simplest way of creating builders for inherited classes is simply to duplicate the builder methods:

public class Y extends X {
private int baz;

public static class Builder {
private Y y = new Y();

public Builder withFoo( int foo ) {
y.foo = foo; return this;
}
public Builder withBar( int bar ) {
y.bar = bar; return this;
}
public Builder withBaz( int baz ) {
y.baz = baz; return this;
}
public Y build() { return y; }
}

protected Y() {}

public int getBaz() { return baz; }
}

But duplication is EvilTM, especially if you have lots of builder methods, or lots of subclasses. We really don't want both Builder classes to have the withFoo and withBar methods. How do we get around this?

My first thought was something along the following lines:

public abstract class X {
protected int foo;
protected int bar;

protected static class Builder<T extends X> {
private T x;

public Builder() { x = createX(); }
public Builder<T> withFoo( int foo ) {
x.foo = foo; return this;
}
public Builder<T> withBar( int bar ) {
x.bar = bar; return this;
}
public T build() { return x; }
protected abstract T createX();
}

protected X() {}

public int getFoo() { return foo; }
public int getBar() { return bar; }
}

public class Y extends X {
private int baz;

public static class Builder extends X.Builder<Y> {
public Builder withBaz( int baz ) {
y.baz = baz; return this;
}
protected Y createX() { return new Y(); }
}

protected Y() {}

public int getBaz() { return baz; }
}

The only trouble with that is that the following fails to compile:

Y y = new Y.Builder().withFoo( 1 ).withBaz( 3 ).build();

Why? Because withFoo returns a Builder<Y>, not a Y.Builder; and the withBaz method is on the latter, not the former.

So...the code I actually wrote looked like this:

public abstract class X {
protected int foo;
protected int bar;

protected static class Builder<T extends X,
B extends Builder<T, B>> {

private T obj;

public Builder() { obj = createObj(); }
public B withFoo( int foo ) {
obj.foo = foo; return this;
}
public B withBar( int bar ) {
obj.bar = bar; return this;
}
public T build() { return built; }
protected abstract T createObj();
}

protected X() {}

public int getFoo() { return foo; }
public int getBar() { return bar; }
}

public class Y extends X {
private int baz;

public static class Builder
extends X.Builder<Y, Y.Builder> {

public Builder withBaz( int baz ) {
obj.baz = baz; return this;
}
protected Y createObj() { return new Y(); }
}

protected Y() {}

public int getBaz() { return baz; }
}

Now the return types are correct...but the withFoo and withBar methods won't compile. The trouble is that this inside X.Builder<T, B> is of type X.Builder<T, B>, not of type B. Actually, at runtime, the builder class should indeed be of type B, but it would be inelegant and type-unsafe to cast this to B everywhere.

Happily, there is a solution that doesn't involve casting. This is the final version of the code:

public abstract class X {
protected int foo;
protected int bar;

protected static class Builder<T extends X,
B extends Builder<T, B>> {

private T obj;
private B thisObj;

public Builder() {
obj = createObj(); thisObj = getThis();
}
public B withFoo( int foo ) {
obj.foo = foo; return thisObj;
}
public B withBar( int bar ) {
obj.bar = bar; return thisObj;
}
public T build() { return built; }
protected abstract T createObj();
protected abstract B getThis();
}

protected X() {}

public int getFoo() { return foo; }
public int getBar() { return bar; }
}

public class Y extends X {
private int baz;

public static class Builder
extends X.Builder<Y, Y.Builder> {

public Builder withBaz( int baz ) {
obj.baz = baz; return thisObj;
}
protected Y createObj() { return new Y(); }
protected Builder getThis() { return this; }
}

protected Y() {}

public int getBaz() { return baz; }
}

We added the getThis() method, which is always implemented as return this; in each subclass. This ensures that the Builder subclass is in fact the B type parameter to X.Builder<T, B>.

So, at the price of a small wart (the getThis() method plus associated instance variable), we've got a solution that maintains type safety, removes duplication, and allows all the code completion goodness that your IDE of choice may offer. Win!

411 comments:

1 – 200 of 411   Newer›   Newest»
eric said...

Great post, Eric. For a moment, I wondered why bother with the Builder in this case, when you could just make the mutator methods fluent. So you would have

X x = new X().setFoo(foo).setBar(bar);

On the other hand, this wouldn't be acceptable for purely initialization parameters that should be immutable.

Thanks for posting this.

Unknown said...

Hello it's wonderfull post.
But what a variable built
in public T build() { return built; } method?

Unknown said...

I've extended this to a multi-class hierarchy at https://onelostlogician.wordpress.com/2016/10/10/inheritance-generics-and-builders/ (though it does use some minimal casting).

aris said...

Well written post. Only a question about the implementation of getThis() in each subclass.

I've tried your solution and if we declare in the abstract class

B getThis() { return (B) this }

then it works without the need to implement it in each subclass.
What do you think about this idea?
Thanks
Stefano

JohnSmith said...

Hi, your article really nice. That is so logical and clearly explained. Keep it up! I follow up your blog for the future post.
Regards,
Java Online Training | Java Online Training in India | Java Online Training India | Java Online Training in Hyderabad | Java Online Training Hyderabad | Java Training in Hyderabad | Java Training in India | Java Training Institutes in India | Java Training Institutes in Hyderabad | Java Course in Hyderabad | Java Training | Learn Java Online | Online Java Training | Best Java online Training Institutes in Hyderabad | Best Java Training Institutes in Hyderabad | Best Institutes for Java | Java Institutes in Hyderabad | Best Institutes for Java in Hyderabad | Learn Java | Java Training Institutes in Hyderabad | Java Certification | Java Certification Training | Java Certification Training in Hyderabad | Java Certification Training in India

Dipanwita said...

Inheritance is a useful feature of OOP. It helps to know how to use it well. java training in chennai

gowsalya said...

Existing without the answers to the difficulties you’ve sorted out through this guide is a critical case, as well as the kind which could have badly affected my entire career if I had not discovered your website.
Digital Marketing online training

full stack developer training in pune

full stack developer training in annanagar

full stack developer training in tambaram

full stack developer training in velachery










Mounika said...

Thank you for sharing such great information with us. I really appreciate everything that you’ve done here and am glad to know that you really care about the world that we live in
Python training in marathahalli
AWS Training in chennai

AWS Training in bangalore

Unknown said...

I believe there are many more pleasurable opportunities ahead for individuals that looked at your site.
Blueprism training in btm

Blueprism online training

AWS Training in chennai

nilashri said...

I found your blog while searching for the updates, I am happy to be here. Very useful content and also easily understandable providing.. Believe me I did wrote an post about tutorials for beginners with reference of your blog. 
Data Science training in Chennai
Data science training in bangalore
Data science online training
Data science training in pune

Unknown said...

The post is written in very a good manner and it entails many useful information for me. I am happy to find your distinguished way of writing the post. Now you make it easy for me to understand and implement the concept.
java training in omr | oracle training in chennai

java training in annanagar | java training in chennai

Unknown said...

It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...

angularjs Training in chennai
angularjs-Training in pune

angularjs-Training in chennai

angularjs Training in chennai

angularjs-Training in tambaram

pavithra dass said...

Thank you for sharing such great information with us. I really appreciate everything that you’ve done here and am glad to know that you really care about the world that we live in.
SEO training course
Best SEO training in chennai
SEO Training Center in Chennai
SEO Institutes in Chennai
SEO Course Chennai
SEO Training near me

prabha said...

I have read a few of the articles on your website now, and I really like your style of blogging. I added it to my favourites blog site list and will be checking back soon.

angularjs interview questions and answers

angularjs Training in bangalore

angularjs Training in bangalore

angularjs online Training

angularjs Training in marathahalli

angularjs interview questions and answers

janani said...

Awesome..You have clearly explained …Its very useful for me to know about new things..Keep on blogging..
Java interview questions and answers

Java training in Chennai | Java training institute in Chennai | Java course in Chennai

Java training in Bangalore | Java training institute in Bangalore | Java course in Bangalore

gowsalya said...

The post is written in very a good manner and it entails many useful information for me. I am happy to find your distinguished way of writing the post. Now you make it easy for me to understand and implement the concept.
Python training in bangalore
Python course in pune
Python training in bangalore

kevin antony said...

This is most informative and also this post most user friendly and super navigation to all posts... Thank you so much for giving this information to me.

rpa training in chennai
rpa training in bangalore
rpa course in bangalore
best rpa training in bangalore
rpa online training

Unknown said...

Have you been thinking about the power sources and the tiles whom use blocks I wanted to thank you for this great read!! I definitely enjoyed every little bit of it and I have you bookmarked to check out the new stuff you post
Data Science training in Chennai | Data Science Training Institute in Chennai
Data science training in Bangalore | Data Science Training institute in Bangalore
Data science training in pune | Data Science training institute in Pune
Data science online training | online Data Science certification Training-Gangboard
Data Science Interview questions and answers

gowsalya said...

The knowledge of technology you have been sharing thorough this post is very much helpful to develop new idea. here by i also want to share this.
Best Devops Training in pune
excel advanced excel training in bangalore
Devops Training in Chennai

pavithra dass said...

This post is much helpful for us. This is really very massive value to all the readers and it will be the only reason for the post to get popular with great authority.
Java J2ee Training in Chennai
German Training Institute in Chennai
german language coaching centres in chennai
Java Coaching Center in Chennai
Best Java Training in Chennai
German Training Centers in Chennai

Anbarasan14 said...

Excellant blog!!! I got to know more usefyl information by reading your blog. Thanks for posting this blog.

TOEFL Classes in Chennai
Best TOEFL Classes in Chennai
TOEFL in Chennai
Best TOEFL Class in Chennai
TOEFL Training Center in Chennai
TOEFL Coaching near me
TOEFL Training in Chennai

sandhiya said...

I am really enjoying reading your well written articles.
It looks like you spend a lot of effort and time on your blog.Keep Doing.
Digital Marketing Training in Bangalore
Digital Darketing Courses in Bangalore
Best Digital Marketing Courses in Bangalore
German Language Institute in Bangalore
German Speaking Classes in Bangalore
German Language in Bangalore

sathyaramesh said...

Thanks for splitting your comprehension with us. It’s really useful to me & I hope it helps the people who in need of this vital information.
Software Testing Training in Chennai | Software Testing Courses in Chennai
Software testing course in coimbatore | software testing training in coimbatore
software testing training in bangalore | software testing course in bangalore
software testing training in madurai | software testing course in madurai

ananthinfo said...

nice post..Sap B1 Companies in Chennai
Sap B1 Company in Chennai
Sap B1 Partners in Chennai
Retail Software Solution Chennai
Retail Software Companies in Chennai
ERP Solution Providers in Chennai

Yogayogi said...

Very good brief and this post helped me alot. Say thank you I searching for your facts. Thanks for sharing with us!
python Training in Pune
python Training in Chennai
python Training in Bangalore

Xplore IT Corp said...

Hey Nice Blog!! Thanks For Sharing!!!Wonderful blog & good post.Its really helpful for me, waiting for a more new post. Keep Blogging!
best java training in coimbatore
php training in coimbatore
best php training institutes in coimbatore

sathish said...

I appreciate that you produced this wonderful article to help us get more knowledge about this topic.
I know, it is not an easy task to write such a big article in one day, I've tried that and I've failed. But, here you are, trying the big task and finishing it off and getting good comments and ratings. That is one hell of a job done!


Selenium training in bangalore
Selenium training in Chennai
Selenium training in Bangalore
Selenium training in Pune
Selenium Online training

roshan said...

Really helpful blog....
aws training in bangalore

jefrin said...

blog is very helpful for me

selenium training institute chennai

harish sharma said...

whatsapp group links 2019

Unknown said...

study

No said...

group link whatsapp
download lucky patcher android app
Vazcon.com
Pubg names
whatsapp dp
Lucky patcher
lucky patcher

Infocampus said...

Great reading experience on this blog.

selenium training in Bangalore
web development training in Bangalore
selenium training in Marathahalli
selenium training institute in Bangalore
best web development training in Bangalore

Raji said...

I am waiting for your more posts like this or related to any other informative topic.
Selenium Training in Chennai | SeleniumTraining Institute in Chennai

meenati said...

very informative blog and useful article thank you for sharing with us , keep posting learn more Technology

Tableau online Training

Android Training


Dot net Course

iOS development course

Ananth Academy said...

nice post.erp training institute in chennai
erp training in chennai
tally erp 9 training in chennai
tally erp 9 training institutes
android training in chennai
android training institutes in chennai
mobile application testing training in chennai


Gowri said...


Wow! Really a nice blog. Thank you so much for you effort.

Check out:
bigdata and hadoop training in chennai
hadoop certification in chennai
big data training cost in chennai
best big data training center in chennai

Diya shree said...

Good job and thanks for sharing such a good blog You’re doing a great job. Keep it up !!

PMP Certification Fees | Best PMP Training in Chennai |
pmp certification cost in chennai | PMP Certification Training Institutes in Velachery |
pmp certification courses and books | PMP Certification requirements |
PMP Training Centers in Chennai | PMP Certification Requirements | PMP Interview Questions and Answers

Jhon Micle said...

If you want to make friends and want to find hot whatsapp groups new whatsapp groups then Join Whatsapp hot whatsapp groups Free to Join.

Jhon Micle said...

click
click
click
click
click
click
click

Anonymous said...

Really very nice blog information for this one and more technical skills are improve,i like that kind of post.

Informatica MDM Interview Questions and Answers

IOT Interview Questions and Answers


Java Interview Questions and Answers


Linux Interview Questions and Answers


LoadRunner Interview Questions and Answers


Magento Interview Questions and Answers

SanjuRockstar said...

lucky patcher hub

ShivSai App Developer said...

"Visit PicsArt happy birthday background banner Marathi बर्थडे बैनर बैकग्राउंड"
"Visit PicsArt happy birthday background banner Marathi बर्थडे बैनर बैकग्राउंड"

Basudev said...

Nice tutorial

Modded Android Apps

jvimala said...

Thanks for sharing the knowledgeable stuff to enlighten us no words for this amazing blog.. learnt so many things I recommend everyone to learn something from this blogger and blog.. I am sharing it with others also
IT Software Training in Chennai | Python Training in Chennai | Dot Net Training in Chennai

data science analytics rakshi said...

Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing.data science course in dubai

Aaditya said...

After reading your article, i must say thanks. You explained it very well. And I hope that other readers will also experience how I feel after reading your article. Great information.

Data Science Courses

vinith said...

I am overwhelmed by your post with such a nice topic. Usually I visit your blogs and get updated through the information you include but today’s blog would be the most appreciable. Well done!
python training in bangalore

malaysiaexcelr01 said...

With so many books and articles coming up to give gateway to make-money-online field and confusing reader even more on the actual way of earning money,




DATA SCIENCE COURSE MALAYSIA

zaintech99 said...

Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work!


date analytics certification training courses
data science courses training
data analytics certification courses in Bangalore

raja yadav said...

itechraja.com



IndiaYojna.in




paytm create new account

Gowri said...

Excellent blog I visit this blog it's really informative. By reading your blog, I get inspired and this provides useful information.

Check out:
reactjs training in chennai
it courses in chennai
react js interview questions

jvimala said...

Thank you so much for posting this hub, Nice work on the Dot net Training..
Regards,

https://www.softlogicsys.in/datascience-training-in-chennai/
https://www.softlogicsys.in/machine-learning-training-in-chennai/
https://www.softlogicsys.in/linux-training-in-chennai/
https://www.softlogicsys.in/dba-administration-training-in-chennai/

vinith said...

It should be noted that whilst ordering papers for sale at paper writing service, you can get unkind attitude. In case you feel that the bureau is trying to cheat you, don't buy term paper from it.
machine learning course in bangalore

saurav said...

Thanks for sharing
Top 10 cars under 5 lakhs
Top 10 cars under 6 lakhs
top 5 light weight scooty

zaintech99 said...

I feel very grateful that I read this. It is very helpful and very informative and I really learned a lot from it.

what are solar panel and how to select best one
learn about iphone X
top 7 best washing machine
iphone XR vs XS max



Priyanka said...

Attend The Python training in bangalore From ExcelR. Practical Python training in bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Python training in bangalore.
python training in bangalore

saurav said...

nice coding
every thing about bikes and cars

Chiến SEOCAM said...

Rất vui và hạnh phúc khi đọc được bài viết của bạn. Cảm ơn bạn đã chia sẻ.

cửa lưới chống muỗi

lưới chống chuột

cửa lưới dạng xếp

cửa lưới tự cuốn

Maketting SEO said...

Vanskeligheter( van bi ) vil passere. På samme måte som( van điện từ ) regnet utenfor( van giảm áp ) vinduet, hvor nostalgisk( van xả khí ) er det som til slutt( van cửa ) vil fjerne( van công nghiệp ) himmelen.

Chiến SEOCAM said...

மகிழ்ச்சியான மற்றும் மகிழ்ச்சியான நாள். கட்டுரையைப் பகிர்ந்தமைக்கு மிக்க நன்றி

máy phun tinh dầu

máy khuếch tán tinh dầu tphcm

máy khuếch tán tinh dầu hà nội

máy xông phòng ngủ

Rajesh said...

thanks for sharing this information
UiPath Training in Bangalore
tableau training in bangalore
tableau training in bangalore marathahalli
best python training institute in bangalore
python training in jayanagar bangalore
Artificial Intelligence training in Bangalore
data science with python training in Bangalore

lucy88 said...


I was just browsing through the internet looking for some information and came across your blog. I am impressed by the information that you have on this blog. It shows how well you understand this subject. Bookmarked this page, will come back for more.Data Science Courses

Bushraah88 said...

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.
Great post, Love it.

Bushraah88 said...


I am looking for and I love to post a comment that "The content of your post is awesome" Great work!
love it

datasciencecourse said...

Very helpfull and working post

data science course singapore is the best data science course

Never Ending Footsteps said...

great article

Skyline University Nigeria

Chiến SEOCAM said...

Bài viết rất thú vị. Cảm ơn bạn đã chia sẻ

GIẢO CỔ LAM GIẢM BÉO

MUA GIẢO CỔ LAM GIẢM BÉO TỐT Ở ĐÂU?

NHỮNG ĐIỀU CHƯA BIẾT VỀ GIẢO CỔ LAM 9 LÁ

Giảo Cổ Lam 5 lá khô hút chân không (500gr)

Chiến SEOCAM said...

Článok je veľmi zaujímavý. Ďakujeme za zdieľanie

DIỆT BỌ CHÉT MÈO BẰNG NHỮNG CÁCH TỰ NHIÊN

DỊCH VỤ DIỆT GIÁN ĐỨC NHANH VÀ HIỆU QUẢ NHẤT HIỆN NAY

DIỆT CHUỘT TẬN GỐC

DIỆT MỐI TẬN GỐC

datasciencecourse said...

Great Information sharing .. I am very happy to read this article .. thanks for giving us go through info.Fantastic nice. I appreciate this post.

datasciencecourse said...

Your work is very good and I appreciate you and hopping for some more informative posts

Anonymous said...

Buy Tramadol Online from the Leading online Tramadol dispensary. Buy Tramadol 50mg at cheap price Legally. Buying Tramadol Online is very simple and easy today. Shop Now.

Fresh Talk said...

Nice Post.Thanks for sharing
Bhuvan Bam income
Carryminati income
Facebook whatsapp instagram down
Ashish Chanchlani income
kar98k pubg
Dynamo Gaming income
free uc
awm pubg
Advantages and disadvanatages of Pubg Mobile

StoryTeller_Keshu said...

Good, this is what I was searching for in yahoo Majhi naukri

Anonymous said...

You might comment on the order system of the blog. You should chat it's splendid. Your blog audit would swell up your visitors. I was very pleased to find this site amazon web services training .I wanted to thank you for this great read!!

IT Tutorials said...



Get the most advanced AWS Course by Professional expert. Just attend a FREE Demo session.
For further details call us @ 9884412301 | 9600112302
AWS training in chennai | AWS training in velachery

Fasts News said...

Amazing WEbsite

토토사이트

Raj Tattapure said...

Thank you for providing the valuable information …

If you want to connect with AI (Artificial Intelligence) World
as like
Python Training
ML(Machine Learning)

Course related more information then meet on EmergenTeck Training Institute .

Thank you.!

Raj Tattapure said...

Thank you for providing the valuable information …

If you want to connect with AI (Artificial Intelligence) World
as like
Python Training
ML(Machine Learning)

Course related more information then meet on EmergenTeck Training Institute .

Thank you.!

Minahil Shah said...

plenix clash update

Minahil Shah said...

face changer apps

Maketting SEO said...

Vanskeligheter( van bi ) vil passere. På samme måte som( van điện từ ) regnet utenfor( van giảm áp ) vinduet, hvor nostalgisk( van xả khí ) er det som til slutt( van cửa ) vil fjerne( van công nghiệp ) himmelen.

SEO Web Agency said...

lucky patcher
lucky patcher apk
luky patcher apk
lucky patcher download
download lucky patcher
lucky patcher for download
dowload lucky patcher
lucky patcher apk download
lucky patcher apk downlaod
download lucky patcher apk
luckypatcher apk download
lucky patcher apk downlod
download lucky pather apk
lucky pacher app
lucky patcher ap
lucky patcher apps
apps lucky patcher
lacky patcher app
apk lucky patcher
lucky patcher app download
download lucky patcher app
lucky patcher download app
download app lucky patcher
app cloner premium apk
lucky patcher games
game lucky patcher
games lucky patcher
lucky patcher game hack app

Adventure Discovery Travel said...

Nice blog. I Love reading all your blog post. it feels so nice and enjoying reading your blogs.
This article is really impressive with depth meaning. I wish to read more such articles from you.

if you want to travel Nepal, visit us at:

Adventure Discovery Travel
everest Base Camp Helicopter Tour
EBC Heli Tour
Helicopter Tour to Everest

Plumbing & HVAC Services San Diego said...

Car Maintenance Tips That You Must Follow


For everyone who owns it, Car Maintenance Tips need to know.
Where the vehicle is currently needed by everyone in the world to
facilitate work or to be stylish.
You certainly want the vehicle you have always been in maximum
performance. It would be very annoying if your vehicle isn’t even
comfortable when driving.
Therefore to avoid this you need to know Vehicle Maintenance Tips or Car Tips
Buy New Car visit this site to know more.

wanna Buy New Car visit this site.
you dont know about Car Maintenance see in this site.
wanna know about Car Tips click here.
know more about Hot car news in here.


jaanu said...

We are tied directly into the sate’s renewal database which allows us to process your request almost instantly. buy essays
machine learning course malaysia

Unknown said...

hindi status

Unknown said...

hindi status

Venkatesh Krishna said...

Thanks for the insightful post SEO Training in Chennai

pradeepdigi said...

Anyone intersted in digital marketing services in delhi contact 9540373787

htop said...

nice message
best devops training in chennai
 devops training in chennai
data Science training in chennai
azure training in chennai
angularjs training in chennai
angular js training in sholinganallur
best angularjs training in chennai

Institute Coim said...

its really nice nice post. thanks for informatiom.
refrigerators

Shubh said...

Download Achari America Yatra Hindi Dubbed Full Movie

Destiny Solutions LLP said...

pinnaclecart quickbooks Integration

technical raja said...

Modking.co
whatsapp status video

Itsranjan.IN

technical raja said...

Modking.co
whatsapp status video

Itsranjan.IN

Biswajit Das said...

Free Online Free HEX to RGBA Tool Click here.

Emphasis said...

nice article sir, also visit to get Slotomania coins, slotomania free coin

Digital Marketing Service said...

Best honeymoon place in Delhi

Best honeymoon place in himachal
Best tourist place in delhi
best honeymoon place in kerala
best tourist place in goa
best tourist places in jharkhand
places to visit in uttar pradesh
honeymoon destinations in india
most romantic honeymoon destinations in india
five star hotels in delhi
five star hotels in delhi list
list of all 5 star hotels in delhi
5 star hotels in delhi near airport
hotel in delhi
hotels in delhi near railway station

Nick said...

watch and download the latest movie
khandani shafakhana movie
khandaani shafakhana
khandaani shafakhana movie

Unique Clipping Path said...
This comment has been removed by the author.
Lavkush said...

tipsontechnology

learn every time new tips on technology

Hey my audience, in this website we’ll post about many tips on technology. many tips on hacking, education and many entertainment niche. i’ll post somethin Tips on technology
g special for you, Everyday
So check out it from here

Lavkush said...

Anushka Sen:- A bollywood Actress of india


Anushka Sen:- She is an actress from India. she works on many roles in his tiny age. The main role of his carrier was Balveer as Mehar. Peoples calls him The purple star of India. His age in this time for about 17 years and she gets about three big roles in his acting carrier. And now she is working on Manikarnika(Jhansi ki Rani).

Anushka Sen

Unique Clipping Path said...

Unique clipping path and high quality image editing service Company in Qatar.We are offering Ecommerce product and all image editing service with reasonable price.See more Details visit here: Clipping Path

Tech News said...

best machine learning training in bangalore

back softe said...

https://www.tamilrockerstime.xyz/
https://www.tamilrockerstime.xyz/2019/08/coolie-no1-2020-full-crew-cast-release.html

Benish said...

Nice blog...Thanks for sharing useful information ...
Python training in Chennai/Python training in OMR/Python training in Velachery/Python certification training in Chennai/Python training fees in Chennai/Python training with placement in Chennai/Python training in Chennai with Placement/Python course in Chennai/Python Certification course in Chennai/Python online training in Chennai/Python training in Chennai Quora/Best Python Training in Chennai/Best Python training in OMR/Best Python training in Velachery/Best Python course in Chennai/<a

Tech News said...

Devops training in bangalore

lajwantidevi said...

vidmate app

Convertible Baby Cribs said...

sorelle cribs


These baby cribs reviews help you to find out a traditional, unique, safe,
comfortable, reliable, sustainable and also most perfect baby cribs.

Tech News said...

Nice Blog
Visit Here -> IOT Training in Bangalore

Alvi Ahmed Sohag said...

Hi Guys. Please contact us if you got any quires or any confusions about Baby products. We would be honored if We can help you. sorelle berkley crib reviews.

Alvi Ahmed Sohag said...


These baby cribs reviews help you to find out a traditional, unique, safe,
comfortable, reliable, sustainable and also most perfect baby cribs. . sorelle berkley crib reviews.

EST of SEO said...


If you feel like you lack purpose and need a little something to inspire you then check out our Top 20 list of Inspirational Movies. Every one of these

best quotes gems tells
a true story from real life, or at the very least are based on fact or true life incidents.

From heartbreaking to heartwarming, harrowing to uplifting, here are 20 tales to get you up off your backside and back in the game. Carpe diem!

visit website

Thomas said...

The group has various division titles, gathering titles and association titles shockingly. A portion of customer care no the untouched best players incorporate Jim Brown, Otto Graham, Joe Thomas, Ozzie Newsome, Paul Warfield, Bernie Kosar, Lou Groza, Leroy Kelly, Marion Motley, Gene Hickerson, Paul Brown, Kevin Mack and Frank customer support number Minnifield.
https://www.vodafone-customer-care-number.in/maharashtra-goa/
vodafone customer care number

Data Science Course Training in Hyderabad said...

Best Data Science Training Institute in Kukatpally, Hyderabad, India

EST of SEO said...

Excelr’s online training in Guidewire is customized and for good enough reasons. Consider what regular trainers offer. A typica Digital Marketing Course in Sydney
would take learners through the basics
of Guidewire, teach them about configuration and understanding of various models, go on to organizing the claims centre and then best practices. This type of generalized
training is of little use to employees handling specific parts like claims management, policy management or billing. Excelr’s custom online training addresses gaps and goes
in-depth into specifics for each employee and his role. The result is that employees emerge better empowered and knowledgeable as well as skilled in what they have to deal with
on a day to day basis.Unlike others, Excelr does not believe in a one size fits all approach in corporate training if highest efficiency and productivity are the goals.
Each employee’s role is analyzed and a custom package is tailored to bring him up to speed. This has two benefits. One, the learner is motivated to learn because what he
learns directly concerns his areas of work. Two, he learns more, in-depth and at speed. The training is online so he can access materials any time he is free and proceed at
his convenience. He can access a tutor anytime he faces any issue while learning and become perfect in the selected modules. Tutors also go beyond to transfer the knowledge
they have gained through years of hands-on experience and give insights that are not usually available in a regular course. By establishing a one-to-one relationship with the
tutor, the learner remains committed and gets to know far more than he would be he to attend a classroom-based course.

Anonymous said...

Visit here for Best hadoop training in bangalore -> Big data and hadoop training in bangalore

Unknown said...

Earn Paytm Cash Online

Unknown said...

Earn Paytm Cash Online

EST of SEO said...

Kaamil Traning is fastly growing Training Center in Qatar
that aims to provide Value through Career Linked training, Professional Development Programs, Producing Top Notch
Professionals, Provide Bright Career Path. Kaamil Training Leveraging best-in-class global alliances and strategic partnerships with Alluring Class rooms, Great Learning
Environment. The toppers study with us and market leaders will be your instructors.
At Kaamil Training our focus is to make sure you have all the knowledge and exam technique you need to achieve your
ACCA Course in Qatar qualification. Our core objective is to help you
pass your exams and our ability to do this is demonstrated by our exceptional pass rates.

Sohag said...

In India you will find the best Ayurvedic treatment for fertility, for women and
men, run by Ayurvedic professionals and specialists. ayurvedic treatment for infertility in kerala

gautham said...

Thanks a lot for sharing for lots of information
ethical hacking online training hyderabad

Nandhini said...

Thanks for sharing like a wonderful blog’s learn more new information from your blog. Keep sharing the post like this…
Python training in bangalore
Python training in Bangalore
Data science with python training in Bangalore
Angular js training in bangalore
Hadoop training in bangalore
DevOPs training in bangalore
Agile and scrum training in bangalore

Anonymous said...

Nice Blog
For Python training in Bangalore, Visit:
Python training in Bangalore

아리 said...

Now downloading of any Tamil movie is simple through isaimini Tamil rockers it will really help you a lot.

아리 said...

Are you looking for the Tamil movie to download Online if yes then click on isaimini co here you get the latest Tamil movie online?

Anonymous said...

For AWS training in Bangalore, Visit:
AWS training in Bangalore

Monir said...

https://www.jhos.com.au/residential-cleaning.php
House cleaning is a profitable business as the hourly rate you can charge, especially in richer parts of town, is very high.

Abhii Aswal said...

thanks for this info.

istiaq ahmed said...

Il catalogo dei migliori prodotti in vendita online
https://listinoprezzo.com




Catalogo Prodotti

Digital Marketing Service said...

five star hotels in delhi
five star hotels in delhi list
list of all 5 star hotels in delhi
5 star hotels in delhi near airport
hotel in delhi
hotels in delhi near railway station

Shallu said...

Technical Baglea best resource to get all kinds of Knowledge about Wordpress, Blogging, SEO, Social Media, YouTube and Make Money Online.

gautham said...

Looks great post learn hacking online for hacking

Mike said...

download call of duty mobile
download call of duty

download call of duty apk

call of duty mobile apk

battle ground call of duty

call of duty battle ground

Download COD Mobile Free For Android

download call of duty mobile Apk for Android

download call of duty mobile for IOS

download COD Mobile

call of duty game modes

download call of duty mobile lagends of war

download call of duty mobile lagends of war apk

download call of duty mobile

download call of duty mobile

download call of duty mobile

download call of duty mobile

download call of duty mobile

download call of duty mobile

call of duty mobile

Unknown said...

I just couldn’t depart your web site before suggesting that I extremely enjoyed the standard info a person provide for your visitors? Is gonna be back often to check up on new posts Majhi naukri

Unknown said...

Hey very nice blog!! Man... Excellent.. Amazing.. I will bookmark your site and take the feeds also…I’m happy to find a lot of useful info here in the post, we need work out more strategies in this regard, thanks for sharing. . . . . . Majhi naukri

luxury watches buy online said...

daamaze is the best online shop for buy First copy ladies bags
javascript:void(0)

ranjitham kannan said...

Thanks a lot very much for the high quality and results-oriented help. I won’t think twice to endorse your blog post to anybody who wants and needs support about this area.
Best PHP Training Institute in Chennai|PHP Course in chennai

Best .Net Training Institute in Chennai
Powerbi Training in Chennai
R Programming Training in Chennai
Javascript Training in Chennai

Vijiaajith said...

Nice...
freeinplanttraining

courseforECEstudents

internship-in-

chennai-for-bsc

inplant-

training-for-automobile-engineering-students

freeinplanttraining

for-ECEstudents-in-chennai

internship-for-

cse-students-in-bsnl

application-for-

industrial-training

jasmin said...

9apps facebook
9apps facebook
9apps Lulubox
applock 9apps
Tiktok app download
9Apps KineMaster - Video Editor
Internet speed metre lite
9APPS HAGO
9Apps Messenger Lite
9Apps Netflix
Candy camera
9APPS MX PLAYER
9apps CamScanner

jasmin said...
This comment has been removed by the author.
Noithatbaoankids said...

Bàn học trẻ em

Phòng ngủ trẻ em

Giường tầng

Training for IT and Software Courses said...

This is the exact information I am been searching for, Thanks for sharing the required infos with the clear update and required points. To appreciate this I like to share some useful information.python training in bangalore

Lovable vicky said...



Data Science Training In Chennai
Data Science Course In Chennai
Data Science Training institute In Chennai
Best Data Science Training In Chennai

nowfirstviral said...

Very Nice Article 먹튀검증커뮤니티

Noithatbaoankids said...

Thanks you verrygood;

Giường tầng đẹp

Mẫu giường tầng đẹp

Phòng ngủ bé trai

Giường tầng thông minh

Training for IT and Software Courses said...

I have to voice my passion for your kindness giving support to those people that should have guidance on this important matter.aws training in bangalore

Training for IT and Software Courses said...

Wow it is really wonderful and awesome thus it is veWow, it is really wonderful and awesome thus it is very much useful for me to understand many concepts and helped me a lot.microsoft azure training in bangalore

Training for IT and Software Courses said...

These provided information was really so nice,thanks for giving that post and the more skills to develop after refer that post.python training in bangalore

Training for IT and Software Courses said...

These provided information was really so nice,thanks for giving that post and the more skills to develop after refer that post.selenium training in bangalore

Best Review Group said...

Great article. Try Free APK Download. Thank You!!

James said...

Very Nice Blog!!! Thanks for Sharing Awesome Blog!! Prescription medicines are now easy to purchase. You can order here.
order Ambien online
buy Ambien cod
Buy Gabapentin cod online
buy Gabapentin 800 mg cod online
Gabapentin 600mg cod Online
Order soma online
cheap carosiprodol online
buy soma 350 mg online

diazepamgenericonline said...

Very Nice Blog!!! Thanks for Sharing Awesome Blog!! Prescription medicines are now easy to purchase. You can order here.
Buy Diazepam Online
Order Diazepam cheap online
Order Diazepam cheap online
Order Valium Cash on Delivery
buy Diazepam in Cheap Price

Katie Edwards said...

Great Article! Thanks for sharing this types of article is very helpful for us! If you have any type of pain like chronic pain, back pain etc.
Best Pharmacy Shop

svrtechnologies said...

Thanks for Sharing Such an Useful and informative Stuff...

amazon web services training

Very Informative Post...Thanks for Sharing...

James said...

Very Nice Blog!!! Thanks for Sharing Awesome Blog!! Prescription medicines are now easy to purchase. You can order here.
Buy Soma 350mg
Order soma online
buy Ambien 5 mg online
buy Ambien online
buying Gabapentin COD
Buy Gabapentin cod online

ek said...

This post is very simple to read and appreciate without leaving any details out. Great work!

Please check ExcelR Data Science Course Pune

Data Science Courses In Mumbai said...

I was just browsing through the internet looking for some information and came across your blog. I am impressed by the information that you have on this blog. It shows how well you understand this subject. Bookmarked this page, will come back for more.
data science course in mumbai

Data science said...

Thank you for sharing this information.your information very helpful for my business. I have gained more information about your sites. I am also doing business related this.
Thank you.
Data Science Training in Hyderabad

Hadoop Training in Hyderabad

Java Training in Hyderabad

Python online Training in Hyderabad

svrtechnologies said...

Thanks for Sharing such an Informative Stuff...

learn tableau online

Xanaxmedonline said...


Thanks for this informative blog.There are online pharmacies such as ours that can help you with medicines along with prescription
buy Xanax 1mg pills online
buy Alprazolam online

order Xanax cash on delivery

order Alprazolam cash on delivery

My Class Training Bangalore said...

It’s really great information Thanks for sharing.
Best Manual Testing Training in Bangalore, BTM layout. My Class Training Academy training center for certified course, learning on Manual Testing Course by expert faculties, also provides job placement for fresher, experience job seekers.

svrtechnologies said...

Really an Informative Blog....

amazon web services tutorial for beginners

Realtime Experts said...

Good to know about the email list business. I was looking for such a service for a long time o grow my local business but the rates that other companies were offering were not satisfactory. Thanks for sharing the recommendations in this post.dot net training in bangalore

Jack sparrow said...

I am a regular reader of your blog and I find it really informative. Hope more Articles From You.Best Tableau Training Videos available Here.

Softgen Infotech said...

Enjoyed reading the article above, really explains everything in detail,the article is very interesting and effective.Thank you and good luck…

Start your journey with DevOps Course and get hands-on Experience with 100% Placement assistance from experts Trainers @Softgen Infotech Located in BTM Layout Bangalore.

nowfirstviral said...

your website is very good website thank for share this website 안전놀이터

Jack sparrow said...

I am so proud of you and your efforts and work make me realize that anything can be
done with patience and sincerity. Well I am here to say that your work has inspired me without a doubt. Here is i want to share about mulesoft training online with Free Bundle videos .

vijay said...

Thanks for your valuable post... The data which you have shared is more informative for us...
aws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore

Real Time Experts said...

Usually I never comment on blogs but your article is so convincing that I never stop myself to say something about it. You’re doing a great job, Keep it up.

Real Time Experts offers the Best SAP SCM Training in Bangalore - Marathahalli, We offer Real-Time Training with Live Projects, Our SAP SCM Trainers are Working Professionals with 8+ years of Expertise in SAP SCM, we also provide placement assistance.

svrtechnologies said...

Thanks for Sharing Such an Informative Stuff...

apex course

Jack sparrow said...

Useful information.I am actual blessed to read this article.thanks for giving us this advantageous information.I acknowledge this post.and I would like bookmark this post. Hope more articles from you. i also want to share about the weblogic application server tutorial with free Bundle videos.

eTechno Soft Solutions said...

I read this post your post so nice and very informative post thanks for sharing this post...

Enrol in SAP FICO Training in Bangalore to master configurations of H SAP FICO with eTechno Soft Solutions Located in BTM Layout.

Technogeekscs said...

Thanks for sharing this article. Really helpful for me.
Devops Training in Pune


TechnoBridage InfoTech said...

php web development company surat

digitaltucr said...

Truly, this article is really one of the very best in the history of articles. I am a antique ’Article’ collector and I sometimes read some new articles if I find them interesting. And I found this one pretty fascinating and it should go into my collection. Very good work!
ExcelR data analytics course in bangalore

mahi said...

Please refer below if you are looking for best project center in coimbatore

Hadoop Training in Coimbatore | CCNA Training in Coimbatore | AWS Training in Coimbatore | AngularJS Training in Coimbatore | Dotnet Training In Coimbatore | SAS Training In Coimbatore | R-Programming Training In Coimbatore

Thank you for excellent article.

Anonymous said...

thanks for sharing
online business loan

Anonymous said...

thanks for sharing
online business loan

istiaq ahmed said...

As a global Corporate Training company, Tuxedo Funding Group has a proven record of helping companies of all types and sizes improve employee performance by creating custom training & learning solutions for all types of employee development needs. We take the time to get to know you, your learners, and your organization.

lajwantidevi said...



vidmate

eTechno Soft Solutions said...

Awesome. I read this post so nice and very informative information...thanks for sharing.

Best SAP Training in Bangalore for SAP, we provide the sap training project with trainers having more than 5 Years of sap training experience, we also provide 100% placement support.

Md Mehedi Hasan said...

mizanur rahman azhari
mizanur rahman azhari waz
mizanur rahman azhari waz mp3 download
mizanur rahman waz
azhari waz
amir hamza waz
mufti amir hamza waz
amir hamza bangla waz
amir hamza waz mp3 download
bangla waz download
bangla waz mp3 download
mizanur rahman azhari gojol
mizanur rahman azhari biography
mawlana mizanur rahman azhari biography
dr abdullah jahangir biography
mufti amir hamza biography
mawlana amir hamza biography
abdullah jahangir biography
মিজানুর রাহমান আজহারি জীবনী
ডঃ আবদুল্লাহ জাহাঙ্গীর জীবনী
মুফতি আমির হামজা জীবনী
মাওলানা আমির হামজা জীবনী

Durai Moorthy said...

Nice blog, thanks for sharing. Please Update more blog about this, this is really informative for me as well
aws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore

tejaswini said...

This is really very nice post you shared, i like the post, thanks for sharing..big data malaysia
data scientist course malaysia
data analytics courses

Viral said...

Very Nice a great website 파워볼사이트

Unknown said...

Thank you to your publish. This is excellent statistics.
It is super and brilliant to visit your website.

click here for more info.

Data Science Courses said...

I have to search sites with relevant information on given topic and provide them to teacher our opinion and the article.

data science course in mumbai
data science course in mumbai

daviada said...

good work done
Dard bhari shayari

adobe mahbub said...

Execillent work! I am impressed and good luck to you at all times.would love to see your article to be continued.
Best Wishes from
https://donnettethomas.tumblr.com

svrtechnologies said...

thanks for posting such an useful info...

Tableau Training

Gurvinder sir said...

very nice



my ccc test free download: CCC Online Exam

svrtechnologies said...

thanks for posting such an useful and informative stuff...

learn data science
data science for beginners

hoc cham soc da said...

Class College Education training Beauty teaching university academy lesson  teacher master student  spa manager  skin care learn eyelash extensions tattoo spray

datasciencecourse said...

After reading your article I was amazed. I know that you explain it very well. And I hope that other readers will also experience how I feel after reading your article.
business analytics course
data science interview questions

digitaltucr said...



I finally found great post here.I will get back here. I just added your blog to my bookmark sites. thanks.Quality posts is the crucial to invite the visitors to visit the web page, that's what this web page is providing.
data science course Mumbai
data science interview questions
data analytics course in mumbai

Rajesh Anbu said...

Very Nice Blog. Thanks for sharing such a nice Blog.
aws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore

Rajesh Anbu said...

Great post..Its very useful for me to understand the information..Keep on blogging..
aws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore

priyanka said...

learn Data Analytics With ExcleR Solutions.

«Oldest ‹Older   1 – 200 of 411   Newer› Newest»