java中23种设计模式之12-装饰模式(decorator pattern)

class Girl
{
public void showAppearance()
{
System.out.println("the girl: face without make up");
}

}
class TakeFlower extends Girl
{
Girl girl=null;
public TakeFlower(Girl girl)
{
this.girl=girl;
}
public void showAppearance()
{
girl.showAppearance();
takeFlower();
}
public void takeFlower()
{
System.out.println(" take flower");
}
}
class TakeNecklace extends Girl
{
Girl girl=null;
public TakeNecklace(Girl girl)
{
this.girl=girl;
}
public void showAppearance()
{
girl.showAppearance();
takeNecklace();
}
public void takeNecklace()
{
System.out.println(" take necklace");
}
}

class TakeEarrings extends Girl
{
Girl girl=null;
public TakeEarrings(Girl girl)
{
this.girl=girl;
}
public void showAppearance()
{
girl.showAppearance();
takeEarrings();
}
public void takeEarrings()
{
System.out.println(" take earrings");
}
}

public class DecoratorPatternTest
{
public static void main(String[] args)
{
Girl aGirl=new TakeNecklace(new TakeFlower(new Girl()));
aGirl.showAppearance();

aGirl=new TakeFlower(new TakeEarrings(new Girl()));
aGirl.showAppearance();
}
}

时间: 2024-11-07 16:08:20

java中23种设计模式之12-装饰模式(decorator pattern)的相关文章

Java中23种设计模式(附代码样例)

一.设计模式分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式.结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式.行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式.其实还有两类:并发型模式和线程池模式 二.设计模式的六大原则1.开闭原则(Open Close Principle)开闭原则就是说对

Java中23种设计模式--超快速入门及举例代码

在网上看了一些设计模式的文章后,感觉还是印象不太深刻,决定好好记录记录. 原文地址:http://blog.csdn.net/doymm2008/article/details/13288067 注:本文代码基本都有很多没有初始化等等问题,主要是为了减少代码量,达到一眼就能了解大概情况的目的. java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,

java中23种设计模式之13-组合模式(composite pattern)

import java.util.LinkedList;abstract class Company{ private String name; public void setName(String name) { this.name=name; } public String getName() { return name; } abstract void add(Company company); abstract void remove(Company company); abstract

java中23种设计模式之16-访问者模式(visitor pattern)

import java.util.ArrayList;import java.util.List;abstract class IVisitor{ public abstract void visit(Banana banana); public abstract void visit(Rice rice); public void visit(IElement iElement) { System.out.println("什么东西,怎么吃啊?"); }} class Human e

java中23种设计模式之5-多例模式(multition pattern)

顾名思义,多例模式相对于单例模式,就是可以有多于一个的有限实例,如下列,只能有两个实例. import java.util.ArrayList;import java.util.Random;class Multition{ private final static int MAX_NUMBER=2; private static ArrayList<Multition> aMultitionArrayList=new ArrayList<Multition>(); private

java中23种设计模式之6-外观模式(facade pattern)

概念:为子系统中的一组接口提供一个统一接口.Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用. 应用场景: 1)为一个复杂子系统提供一个简单接口. 2)提高子系统的独立性. 3)在层次化结构中,可以使用Facade模式定义系统中每一层的入口. 以大型娱乐商场提供的休闲一条龙服务为例,包括购物,餐饮,按摩.其中购物,按摩,餐饮作为子系统的组成,提供统一对外接口PackageService 类图如下: class Shopping{ String customer=null; pu

java中23种设计模式之18-原型模式(Prototype pattern)

class Something{ public String something=null;}class Prototype implements Cloneable{ private String name; public Something aSomething=new Something(); public void setName(String name) { this.name=name; } public String getName() { return name; } publi

java中23种设计模式之17-状态模式(state pattern)

interface State{ public void handle(StateMachine statemachine);} class Eat implements State{ StateMachine statemachine=null; public void handle(StateMachine statemachine) { System.out.println("eat"); this.statemachine=statemachine; this.statemac

java中23种设计模式之9-建造者模式(builder pattern)

class Computer{ private String name=null; private String cpu=null; private String ddr=null; private String hdd=null; public void setName(String name) { this.name=name; } public void setCpu(String cpu) { this.cpu=cpu; } public void setDdr(String ddr)