博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java模式之装饰模式
阅读量:6708 次
发布时间:2019-06-25

本文共 3417 字,大约阅读时间需要 11 分钟。

1. 什么叫装饰模式?

根据业务的需求,需要对一个类的方法进行增强的处理。

 

2. 为什么需要装饰模式?

拓展性更加的好,当觉得这个装饰不好的时候,可以直接拿下,不需要改变任何的代码。

 

3. 装饰模式的一个具体的应用?   电子发票系统

代码:

package com.huxin.decorator.test;import java.util.Date;import java.util.Vector;abstract public class Order {    private String name;    private Date date ;    private Vector itemsLinelist  = new Vector(10);    public Order(){    	System.out.println("调用order的构造方法");    }	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public Date getDate() {		return date;	}	public void setDate(Date date) {		this.date = date;	}	public double getTotalPrice() {		double price = 0.0d;		for(int i =0 ;i

 

package com.huxin.decorator.test;public class SalsOrder extends Order {   public SalsOrder(){	  System.out.println("调用SalsOrder的构造方法");   }   public void print(){	   super.print();   }}

 

package com.huxin.decorator.test;public class ItemsLine {    private String itemsName;    private double unit ;    private int number;    private double subTotalPrice;	public String getItemsName() {		return itemsName;	}	public void setItemsName(String itemsName) {		this.itemsName = itemsName;	}		public double getUnit() {		return unit;	}	public void setUnit(double unit) {		this.unit = unit;	}	public int getNumber() {		return number;	}	public void setNumber(int number) {		this.number = number;	}	public double getSubTotalPrice() {		return number * unit;	}	public void print(){		System.out.println("购买商品的名字为:"+ itemsName+ "单价为:"+ unit+ "数量为"+ number);	}}

 

package com.huxin.decorator.test;abstract public class AbstractDecorator extends Order{   protected Order order;    //装饰类必须接受这个order对象   public AbstractDecorator(Order order){	   this.order = order;	   this.setDate(order.getDate());	   this.setName(order.getName());   }   public void print(){	   super.print();   }}

 

package com.huxin.decorator.test;public class FootDecorator extends AbstractDecorator {	   //装饰类必须接受这个order对象	   public FootDecorator(Order order){          super(order);System.out.println("我后被创建FootDecorator");	   }	   public void print(){		   order.print();		   printFooter();	   }	   public void printFooter(){System.out.println("foot==================================================");		   System.out.println("总价格为:"+ super.order.getTotalPrice());	   }}

 

package com.huxin.decorator.test;public class HeaderDecorator extends AbstractDecorator {	   //装饰类必须接受这个order对象	   public HeaderDecorator(Order order){		  super(order);System.out.println("我先被创建HeaderDecorator");	   }	   public void print(){		   printHeader();		   super.order.print();	   }	   public void printHeader(){System.out.println("header==================================================");		   System.out.println("顾客的姓名为:"+ super.order.getName() +"日期为:"+ super.order.getDate());	   }}

 

package com.huxin.decorator.test;import java.util.Date;public class Client {	private static Order order;	public static void main(String[] args) {					   order = new SalsOrder();	   ItemsLine itemsLine = new ItemsLine();	   itemsLine.setItemsName("杯子");	   itemsLine.setUnit(8.0d);	   itemsLine.setNumber(1);	   	   ItemsLine itemsLine2 = new ItemsLine();	   itemsLine2.setItemsName("疯狂java");	   itemsLine2.setUnit(610d);	   itemsLine2.setNumber(2);	   	   order.addItems(itemsLine2);	   order.addItems(itemsLine);	   	   order.setDate(new Date());	   order.setName("胡鑫");	   order= new HeaderDecorator(new FootDecorator(order));	   order.print();	}}

 

 

 

 

转载地址:http://cenlo.baihongyu.com/

你可能感兴趣的文章
android Fragment
查看>>
java 、Android 提交参数转码问题
查看>>
iOS UIScrollView 停止滑动 减速
查看>>
[Codility] CommonPrimeDivisors
查看>>
GIS API乱弹
查看>>
对https的理解
查看>>
七周七语言(6)
查看>>
解决delphi10.2.3 android tools闪退
查看>>
在ASP.NET Atlas中创建自定义的Action
查看>>
深度观察:腾讯收购大众点评背景下的O2O大格局
查看>>
LightOJ 1061 N Queen Again(记忆化搜索)
查看>>
互斥量和信号量的区别
查看>>
Csharp run sql script create database
查看>>
#pragma once 与 #ifndef 的区别解析
查看>>
How to check Ubuntu version
查看>>
php 解析xml 的四种方法(转)
查看>>
qt 试用 (3)配置编译源代码及调试
查看>>
(转)用CSS3移除点击交互元素的高亮背景
查看>>
遍历json获得数据的几种方法
查看>>
php Collection类的设计
查看>>