`

装饰者设计模式

    博客分类:
  • java
阅读更多

装饰着 体现了开闭原则 对扩展开放,

  基本类pojo

package com.founder.decorative;

/**
 * @author qincy
 *  基本类型 抽象类
 */
public abstract class Basic {
	private String description = "Basic ";

	public String getDescription() {
		return description;
	}

	public Basic() {
		
		// TODO Auto-generated constructor stub
	}

	public abstract double cost();
}

 

   实现

package com.founder.decorative;

/**
 * @author qincy
 *  装饰 修饰类 不同
 */
public class AchieveTest1 extends BasicDecorative {

	private Basic ac;

	/**
	 *  重点在这里通过构造函数 对Basic 对象 进行 装饰
	 * @param ac
	 */
	public AchieveTest1(Basic ac) {

		this.ac = ac;
	}

	@Override
	public String getDescription() {
		// TODO Auto-generated method stub
		return ac.getDescription() + "  === AchieveTest1";
	}

	public double cost() {
		return 1 + ac.cost();
	}

}

 

package com.founder.decorative;

public class AchieveTest2 extends BasicDecorative {

	private Basic ac;

	public AchieveTest2(Basic ac) {

		this.ac = ac;
	}

	@Override
	public String getDescription() {
		// TODO Auto-generated method stub
		return ac.getDescription() + "  === AchieveTest2";
	}

	public double cost() {
		return 2 + ac.cost();
	}

}

 。。。

 装饰者类

 

package com.founder.decorative;

/**
 * @author qincy
 *  装饰者的抽象类
 */
public abstract class BasicDecorative extends Basic {

	
	public abstract String getDescription();
}

 

 实现装饰者

package com.founder.decorative;

/**
 * @author qincy
 *  形成 不同的类
 */
public class BasicExtends1 extends Basic {

	private String descrption;

	public BasicExtends1() {
		descrption="BasicExtends1";
		System.out.print(descrption);
	}

	@Override
	public double cost() {
		// TODO Auto-generated method stub
		return 10;
	}

}

 

package com.founder.decorative;

public class BasicExtends2 extends Basic {

	private String descrption;

	public BasicExtends2() {
		descrption="BasicExtends20";
		System.out.print(descrption);
	}

	@Override
	public double cost() {
		// TODO Auto-generated method stub
		return 20;
	}

}

 

 mian

package com.founder.decorative;

public class main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Basic bd= new BasicExtends1();
		System.out.println(bd.getDescription()+"  "+bd.cost());
		
		Basic bd2= new BasicExtends2();
		bd2 = new AchieveTest1(bd2);
		bd2 = new AchieveTest2(bd2);
		bd2 = new AchieveTest3(bd2);
		bd2 = new AchieveTest4(bd2);
		System.out.println(bd2.getDescription()+"  "+bd2.cost());
		
		Basic bd3= new BasicExtends3();
		bd3 = new AchieveTest1(bd3);
		bd3 = new AchieveTest2(bd3);
		bd3 = new AchieveTest3(bd3);
		//bd3 = new AchieveTest4(bd3);
		System.out.println(bd3.getDescription()+"  "+bd3.cost());
	}

}

 

  results

 

BasicExtends1Basic   10.0
BasicExtends20Basic   === AchieveTest1  === AchieveTest2  === AchieveTest3  === AchieveTest4  30.0
BasicExtends 30Basic   === AchieveTest1  === AchieveTest2  === AchieveTest3  36.0

 

分享到:
评论

相关推荐

    01.装饰者设计模式和动态代理设计模式.wmv

    01.装饰者设计模式和动态代理设计模式.wmv

    weekyuan#design-patterns#笔记五 装饰者设计模式1

    1. 装饰者设计模式-是什么 2. 装饰者设计模式-定义 3. 装饰者设计模式-模拟网关权限控制 4. 装饰者设计模式-测试

    设计模式--装饰者模式java例子

    装饰者模式是软件设计模式中的一种结构型模式,它的主要目的是动态地给对象添加新的功能,而无需修改原有代码。在Java中,装饰者模式通常通过继承和组合来实现,它提供了一种比继承更灵活的方式来扩展对象的功能。...

    装饰设计模式

    ### 装饰设计模式详解 #### 一、装饰设计模式概述 装饰设计模式(Decorator Pattern)是一种结构型设计模式,允许向对象动态地添加新功能。这种模式提供了一种替代继承的方式,使得我们可以在不修改原有类的基础上...

    设计模式-装饰者

    装饰者设计模式是一种结构型设计模式,它允许在运行时向对象添加新的行为或属性,而无需修改对象的源代码。这种模式的核心在于装饰者和组件接口是相同的,因此装饰者可以完全替代原对象,同时还能增加额外的功能,...

    设计模式-装饰者模式

    在“设计模式—装饰者模式”中,我们将深入探讨这个模式的概念、实现方式以及实际应用。 装饰者模式的核心概念在于“装饰”(Decorator)和“组件”(Component)。组件是被装饰的基本对象,它可以是接口或者抽象类...

    java设计模式之装饰者模式代码

    装饰者模式是面向对象设计模式的一种,主要用于动态地给一个对象添加一些额外的职责,而不会改变该对象的类。这种模式允许我们独立于对象的类来扩展对象的功能,为对象提供新的行为,同时保持了代码的可读性和可维护...

    设计模式之装饰者模式,内含可运行代码

    总的来说,装饰者模式是一种强大的设计模式,它提供了一种在运行时动态调整对象行为的方法,使得代码更具灵活性和可扩展性。通过理解和熟练运用装饰者模式,我们可以更好地应对软件需求的变化,提高代码的可维护性和...

    23种设计模式详解PDF

    设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...

    24种设计模式以及混合设计模式

    创建型设计模式关注对象的创建过程,如单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)和建造者模式(Builder)。这些模式提供了一种灵活且可扩展的方式来创建和管理对象。 结构型...

    c# ,设计模式,装饰者模式,星巴兹咖啡

    装饰者模式是面向对象设计模式中的一个重要概念,它在C#等编程语言中广泛应用。这个例子以星巴克咖啡为例,展示了如何使用装饰者模式来灵活地扩展对象的功能,而无需修改原有代码。 装饰者模式的核心思想是动态地将...

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    Head First 设计模式 +Java设计模式(第2版)

    这本书通过丰富的图像、故事和幽默的方式,引导读者了解23种经典的GoF(Gang of Four)设计模式,包括单例模式、工厂模式、观察者模式、装饰器模式、适配器模式、代理模式等。书中强调了如何在实际项目中选择和应用...

    设计模式课件大全

    设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式...

    GOF设计模式中英文+设计模式精解中英文

    总之,GOF设计模式和设计模式精解是软件工程师的宝贵参考资料,无论你是初学者还是经验丰富的开发者,都应该熟悉和掌握这些模式,以便在项目中灵活运用,提高代码质量和可维护性。通过深入学习这些设计模式,不仅...

    设计模式 - 装饰者模式.rar

    装饰者模式是一种结构型设计模式,它允许在运行时向对象添加新的行为或职责,而无需修改对象本身。这种模式的核心思想是通过将对象包装在一个装饰类中来扩展功能,而不是通过继承。以下是对装饰者模式的详细阐述: ...

    Qt设计模式之装饰者模式

    **Qt设计模式之装饰者模式** 装饰者模式(Decorator Pattern)是软件设计模式中的结构型模式之一,它允许在运行时动态地给一个对象添加新的行为或职责,而无需修改对象本身。在Qt库中,装饰者模式也被广泛应用,...

    54-Spring设计模式之装饰器模式1

    Spring 设计模式之装饰器模式详解 在软件设计中,经常会遇到需要在不修改原有代码的情况下,添加新的功能或行为。这时,装饰器模式便可以发挥其作用。在 Spring 设计模式中,装饰器模式是非常重要的一种设计模式。 ...

    设计模式—装饰者模式

    装饰者模式(Decorator Pattern)是软件工程中一种用于动态地给一个对象添加额外职责的设计模式。它属于结构型模式,可以让我们在不改变对象自身的基础上,在运行时为对象添加新的功能,即“装饰”对象。这使得我们...

Global site tag (gtag.js) - Google Analytics