首页 > 编程语言 >装饰设计模式-java

装饰设计模式-java

时间:2023-04-01 10:33:57浏览次数:32  
标签:info java Auto drink public stub cost 设计模式 装饰

 

 

package cn.shuishandt.opp;

public class DecorateTest2 {
    public static void main(String[] args) {
    	Coffe coffe = new Coffe();
    	System.out.println(coffe.cost()+"=============>"+coffe.info());
    	Milk milk = new Milk(coffe);
    	System.out.println(milk.cost()+"=============>"+milk.info());
    	Suger suger = new Suger(coffe);
    	System.out.println(suger.cost()+"=============>"+suger.info());
    	
    	Suger suger2 = new Suger(milk);
    	System.out.println(suger2.cost()+"=============>"+suger2.info());
    	
    }
}


// 第一步 实现一个接口  公共接口
interface Drink{
	double cost();
	String info();
}

//第二部   实现一个具体的类
class Coffe implements Drink{
	private String name = "原味卡法";

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

	@Override
	public String info() {
		// TODO Auto-generated method stub
		return name;
	}
	
}

//第三步  实现一个抽象类  开始装饰   

abstract class Decorate implements Drink{
	// 增加对抽象组件的引用
	private Drink drink;
	
	public Decorate(Drink drink) {
		this.drink = drink;
	}

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

	@Override
	public String info() {
		// TODO Auto-generated method stub
		return this.drink.info();
	}
	
}

//第四步 写具体的装饰类  对抽象类的实现

class Milk extends Decorate{

	public Milk(Drink drink) {
		super(drink);
		// TODO Auto-generated constructor stub
	}
	public double cost() {
		// TODO Auto-generated method stub
		return super.cost()*4;
	}

	@Override
	public String info() {
		// TODO Auto-generated method stub
		return super.info()+"加了牛奶";
	}
	
	
}

class Suger extends Decorate{

	public Suger(Drink drink) {
		super(drink);
		// TODO Auto-generated constructor stub
	}
	public double cost() {
		// TODO Auto-generated method stub
		return super.cost()*2;
	}

	@Override
	public String info() {
		// TODO Auto-generated method stub
		return super.info()+"加了蔗糖";
	}
	
}

  

标签:info,java,Auto,drink,public,stub,cost,设计模式,装饰
From: https://www.cnblogs.com/Mengchangxin/p/17278192.html

相关文章

  • java高精度定位系统源码 工厂人员定位系统源码
    这是一套java定位系统源码,工厂人员定位系统源码,UWB高精度定位系统源码,前后端分离架构,源码有演示。工厂人员定位系统,高精度的位置数据作为智能工厂数据流的重要组成部分,可实现对工厂内的人,车、物的精确定位,无缝追踪,智能调配与高效协同,可大幅提升工厂的精益生产及精细化管理水平,我们......
  • JavaScript
    大致路径学习JavaScript的路径可以大致分为以下几个方向:HTML和CSS:在学习JavaScript之前,您需要先掌握HTML和CSS基础知识,这是构建网页的基础。JavaScript基础:学习JavaScript的基本语法、变量和数据类型、运算符、条件语句、循环语句等。DOM编程:学习如何通过Ja......
  • 万恶的环境 二 java
    可恶的环境奇奇怪怪的问题目录可恶的环境问题描述原因总结问题描述配置java开发环境一直在报错原因两个问题1.你的java环境太多,配置了不同的java环境变量导致无法进行build2.在配置java环境时,需要配置jdk,而不是jrejdk是开发时需要部署的jre是运行时部署的下面一个是jre......
  • 渡一教育_Java每日一练:建立Statement的作用是什么、前端Console.log( Boolean(‘‘))
    系列文章目录文章目录系列文章目录题目1java部分建立Statement的作用是什么(答案在最后公布)题目1-答案==解析====答案==题目2前端js部分==答案==题目3前端js部分如下代码输出的是什么答案和解析如下==解析==题目4如果希望1监听TCP端口为9000,服务端应该怎样创建socket题目答......
  • java 中 Stack 已不推荐使用,应该用什么代替?
    为什么不推荐用Stack?java中Stack已被“废弃”,主要是因为其性能低。Stack继承自Vector,而Vector在每个方法中都加了锁,因此Stack性能低下。详细分析:算法动画图解|被"废弃"的Java栈,为什么还在用-知乎用什么代替Stack?建议使用Deque<Integer>stack=newArrayDe......
  • vscode配置Java环境
    参考链接:https://blog.csdn.net/weixin_61370021/article/details/126788606?app_version=5.15.1&code=app_1562916241&csdn_share_tail={"type"%3A"blog"%2C"rType"%3A"article"%2C"rId"%3A"126788606"%2......
  • Solon v2.2.7 发布,支持 Java 8 到 Java 20
    Solon是一个高效的Java应用开发框架:更快、更小、更简单。也是一个有自己接口标准规范的开放生态。150来个生态插件,覆盖各种不同的应用开发场景:相对于SpringBoot和SpringCloud的项目:启动快5~10倍。(更快)qps高2~3倍。(更高)运行时内存节省1/3~1/2。(更少)打......
  • JAVA基础
    赋值符号表typevaluetint10sString0x1618变量和字面量之间的赋值s=10,基本数据类型,赋值s="tag",引用数据类型,赋地址变量和变量之间的赋值s=t基本数据类型变量,赋t的具体值引用数据类型变量,赋t指向的引用的地址值包装类型包......
  • 有关斐波那契查找-Java实现
    其实对于斐波那契查找,是一种新的查找思想,对与其实用性我持怀疑态度;主要就是,黄金风分割得思想;而斐波那契数列正好符合这一特性;其中的思想不过多赘述;主要事可以培养算法的思想;1/***2*fib查找3*@paramnum目标排查找数组4*@paramnumSearch目标数......
  • java查询hbase
    Mark——java查询hbase,https://blog.csdn.net/weixin_46408961/article/details/124224169查询Hbase数据分为Get方式查询,Scan方式查询,Scan配合Filter过滤查询01.Get方式查询importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.Cell;importorg.ap......