自学Java,学到装饰模式, 弄了半天,终于搞懂了!!所以自己也写了一个简单的装饰模式! 自娱自乐一下
// 人穿衣的嘛,此接口没什么好解释的!
public interface Human
{ /*
*c7c7cc7@126.com
*/
public void dress();
}
----------------------------------------------------------------------------
// 把"Human"类具体化,指的是 少女(gril)! 在方法dress 里,有一个没有穿衣服的少女! 嘎!!嘿嘿~~~~
public class Gril implements Human
{
@Override
public void dress()
{
System.out.println("裸体");
}
}
----------------------------------------------------------------------------------
public class Clothes implements Human
{
/*
* 衣服(clothes)就是为了给人穿的嘛,所以你要有一个人的引用,
*并且在构造方法上把衣服给人
*/
private Human human;
public Clothes( Human human)
{
this.human = human;
}
// 给人穿衣
@Override
public void dress()
{
human.dress();
}
}
---------------------------------------------------------------------
// 一个裙子(skirt)类,少女害羞,先给她来件裙子,把春光藏起来
public class Skirt extends Clothes
{
public Skirt (Human human)
{
super(human);
}
@Override
public void dress()
{
super.dress();
this.derssAn0ther();
}
public void derssAn0ther()
{
System.out.println("----->穿上了裙子");
}
}
------------------------------------------------------
// 再来件裤子,俗话说,风吹裙起屁屁凉,春风乍泄路人惊!所以,一件裙子顶毛用??
public class Pants extends Clothes
{
public Pants( Human human)
{
super(human);
}
@Override
public void dress()
{
super.dress();
this.dressAnother();
}
public void dressAnother()
{
System.out.println("----->穿上了裤子");
}
}
------------------------------------------------------
// 少女叫小丽,在试衣间(dressing room)换衣服了!!
// 可以一件一件的 穿!当然也可以一次性都穿好出来;一般推荐第二种,省代码量
public class DressingRoom
{
public static void main(String[] args)
{
/*
Human xiaoli = new Gril();// 把小丽叫出来(没穿衣服的)
Human xiaoli_2 = new Skirt(xiaoli);// 给小丽穿了个裙子(小丽第二步要做到)
xiaoli_2.dress();
Human xiaoli3 = new Pants(xiaoli_2);// 又穿了个裤子(小丽第三步要做到)
xiaoli_3.dress();
*/
// 把上面的合并起来.推荐!!!!
Human xiaoli = new Skirt (new Pants (new Gril()));
xiaoli.dress();
}
}
第一次发帖,多指教!