Home >Java >javaTutorial >Java decoration mode learning
This article mainly introduces the relevant information of decoration mode in java design pattern learning in detail. It has certain reference value. Interested friends can refer to
Decoration mode: dynamic giving An object adds some additional responsibilities, and the decoration pattern is more flexible than subclassing in terms of adding functionality.
Advantages: Decorating classes and decorated classes can develop independently and will not be coupled to each other. Decoration mode is an alternative mode to inheritance. Decoration mode can dynamically extend the functions of an implementation class.
Disadvantages: Multi-layer decoration is more complicated.
Example: Configure clothing for a person
1: Code structure diagram
##2: Create a person class (ConcreteComponent)package DecoratorModel; /** * 2017-10-9 10:39:09 * 装饰器设计模式 * Person 类 ConcreteComponent * @author 我不是张英俊 * */ public class Person { public Person(){} private String name; public Person(String name){ this.name=name; } public void Show(){ System.out.println("装扮的"+name); } }3: Clothing category
package DecoratorModel; /** *服饰类(Decorator) * @author 我不是张英俊 * */ public class Finery extends Person{ protected Person component; //打扮 public void Decorate(Person component){ this.component=component; } public void Show(){ if(component!=null){ component.Show(); } } }4: Specific clothing category
public class Tshirts extends Finery { public void Show(){ System.out.println("大T恤"); super.Show(); } } public class BigTrouser extends Finery { public void Show(){ System.out.println("垮裤"); super.Show(); } } public class Sneakers extends Finery { public void Show(){ System.out.println("破球鞋"); super.Show(); } } public class Suit extends Finery { public void Show(){ System.out.println("西装"); super.Show(); } } public class Tie extends Finery { public void Show(){ System.out.println("领带"); super.Show(); } } public class LeatherShoes extends Finery { public void Show(){ System.out.println("皮鞋"); super.Show(); } }5: Test category
public class test { public static void main(String[] args) { Person xc=new Person("旺财"); Sneakers pqx=new Sneakers(); BigTrouser kk=new BigTrouser(); Tshirts dtx=new Tshirts(); pqx.Decorate(xc); kk.Decorate(pqx); dtx.Decorate(kk); dtx.Show(); } }6: ConsoleBig T-shirt
Loggy pants
Broken sneakers
DRESSING WANGCAI
The above is the detailed content of Java decoration mode learning. For more information, please follow other related articles on the PHP Chinese website!