I believe most software developers know the word object-oriented, so it produces object-oriented programming that OO, how to object-oriented how to abstract, how to encapsulate that. Let me use Java to give an example
Two stones grind into a stone knife, how to abstract encapsulation.
1, we can easily see a class of stone, think of a stone inside should have a way to become what. At first I think so, but in a careful think of the wrong, if the stone turned himself into a stone knife, then it is not there, so this method should not be placed in their own, should be in writing a factory class is responsible for the stone into stone knife,
2, all should have two class stone and stonefactory Stone have some of their own properties, and the factory method is responsible for turning the stone into stone knives
3, we are interested can go to see the Zhang Xiaoxiang: object-oriented Design of this session of the video about 20 minutes.