Gallian's Contemporary Abstract Algebra is a decent text for the topic, and is one of the few texts out there which manages to be a the standard for many universities, but also manages to remain accessible, readable, and enjoyable for students at all levels.
The book contains 33 chapters, of which the first (roughly) 22 make up the core of a two semester undergraduate algebra course covering groups, rings, and fields. Most of the chapters are rather short (10-20 pages it seems on average), but this thorough breakdown of chapters makes each and every one rather simple to read and understand, without introducing too much at one time (refer to Herstein's Topics in Algebra if you want to see a book which doesn't have enough chapters, teaching what is essentially an entire semester worth of group theory in one overbloated chapter, which is easy to get lost in). Gallian is great at providing examples, and gives definitions and theorems with very clear and concise language. For the most part, he tends to try to use standard terminology and provides plenty of examples and diagrams to aid students with the learning.
The final nine chapters of the book, making up roughly 1/3 of the textbook, contains many special topics. Some of these are very standard chapters for abstract algebra texts which are sometimes skipped (even if they really shouldn't be) such as the Sylow Theorems and Finite Simple Groups, but you'll also find chapters on coding theory, Galois theory, Frieze groups, and more. The material presented in these chapters demonstrate the true beauty of abstract algebra, and while it is very unlikely that a traditional course could ever include all of these chapters as part of the core material, these chapters provide great opportunities for student projects, promoting student interest in research, or even a "third" semester of special topics in abstract algebra for motivated undergraduates. Still, the organization be slightly better if these chapters were placed in the book immediately after the pre-req material motivating the topic, and simply tagged as "optional" rather than relegating it to the back 1/3 of the book.
The book has some very nice exercises, including some which are more or less standard, and some which present material at a much more advanced level. There is no shortage of exercises either. Each chapter provides anywhere from 20-80 (or so) exercises representing all levels, as well as additional "supplemental" exercises every few chapters. Hints and selected solutions are provided at the end of the textbook for odd numbered exercises, which I would strongly advise not turning to until you believe that you fully understand the material at hand and simply want to check your work. However, solutions and hints are a very excellent key to ensuring that you understand the material. My experience with a lot of textbooks is that they go too far with the solutions (such as giving complete proofs, which isn't helpful because it leads to merely memorizing answers) or aren't thorough enough (I've seen an analysis textbook, for example, which gives hints for a small number of exercises at the end of the book which give unhelpful advice like "this is easy."). Gallian tends to give very brief hints which can motivate a complete proof for students making a serious attempt to know the information, but still requires the student to develop a complete proof without being completely coddled. Of course, for even-numbered exercises, sometimes which are "paired" with the preceding exercises, there are no solutions or hints, but the flow follows along naturally. The book lacks true/false questions, which are actually very useful for an abstract algebra course; however, Gallian places some of these on an interactive (though somewhat buggy) Java applet his website.
Some serious mathematicians are put off by the inclusion of history discussions in the text, along with the sprinkling of various pop-culture quotes at different places, and while some textbooks do get a little silly over these things, none of this tends to distract from the ability to learn the material.
One unfortunate aspect about this book is that the popularity of it has turned it in to one of those books where the publisher keeps cranking out new editions of the book at a pace that is completely unnecessary. It is great when a new edition is published and contains significant and substantial updates, but the updates to this book have really not been necessary for the past few editions. But with that being said, most of the more recent older editions of the book are sufficient for the material, you just have to be careful with the numbering of exercises.
This book is one of the standards for an upper-level undergraduate abstract algebra course and hopefully it will remain that way until somebody comes up with something a little bit better. In the current era, though, it provides an excellent and readable text for students which is capable of further motivating interest in the (pardon the pun) field of abstract algebra.