网站 html5,代理公司名字,销售管理系统c语言,阜阳网站建设价格低1. 什么叫装饰模式? 根据业务的需求#xff0c;需要对一个类的方法进行增强的处理。 2. 为什么需要装饰模式#xff1f; 拓展性更加的好#xff0c;当觉得这个装饰不好的时候#xff0c;可以直接拿下#xff0c;不需要改变任何的代码。 3. 装饰模式的一个具体的应用…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 ;iitemsLinelist.size();i){ItemsLine itemsLine (ItemsLine)itemsLinelist.get(i);price itemsLine.getSubTotalPrice();}return price;}public void addItems(ItemsLine itemsLine){itemsLinelist.add(itemsLine);}public void removeItems(ItemsLine itemsLine){itemsLinelist.remove(itemsLine);}public void print(){
System.out.println(order);for(int i 0 ;iitemsLinelist.size();i){ItemsLine itemsLine (ItemsLine)itemsLinelist.get(i);itemsLine.print();}}
}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();}
} 转载于:https://www.cnblogs.com/jiangu66/p/3165477.html