Composite
来源:互联网 发布:评价小二黑结婚知乎 编辑:程序博客网 时间:2024/05/18 02:02
package designPatterns;
import java.util.*;
abstract class Equipment ...{
private String name;
public abstract double netPrice();
public abstract double discountPrice();
public boolean add(Equipment equipment) ...{
return false;
}
public boolean remove(Equipment equipment) ...{
return false;
}
public Iterator iter() ...{
return null;
}
public Equipment(final String name) ...{
this.name = name;
}
}
class Disk extends Equipment ...{
public Disk(String name) ...{
super(name);
}
public double netPrice() ...{
return 1.;
}
public double discountPrice() ...{
return .5;
}
}
abstract class CompositeEquipment extends Equipment ...{
private int i = 0;
private List equipment = new ArrayList();
public CompositeEquipment(String name) ...{
super(name);
}
public boolean add(Equipment equipment) ...{
this.equipment.add(equipment);
return true;
}
public double netPrice() ...{
double netPrice = 0.;
Iterator iter = equipment.iterator();
while (iter.hasNext())
netPrice += ((Equipment) iter.next()).netPrice();
return netPrice;
}
public double discountPrice() ...{
double discountPrice = 0.;
Iterator iter = equipment.iterator();
while (iter.hasNext())
discountPrice += ((Equipment) iter.next()).discountPrice();
return discountPrice;
}
public Iterator iter() ...{
return equipment.iterator();
}
public boolean hasNext() ...{
return i < equipment.size();
}
public Object next() ...{
if (hasNext())
return equipment.get(i++);
else
throw new NoSuchElementException();
}
}
class Chassis extends CompositeEquipment ...{
public Chassis(String name) ...{
super(name);
}
public double netPrice() ...{
return 1. + super.netPrice();
}
public double discountPrice() ...{
return .5 + super.discountPrice();
}
}
class Cabinet extends CompositeEquipment ...{
public Cabinet(String name) ...{
super(name);
}
public double netPrice() ...{
return 1. + super.netPrice();
}
public double discountPrice() ...{
return .5 + super.discountPrice();
}
}
public class CompositeTest ...{
public static void main(String[] args) ...{
Cabinet cabinet = new Cabinet("Tower");
Chassis chassis = new Chassis("PC Chassis");
cabinet.add(chassis);
chassis.add(new Disk("10 GB"));
System.out.println("netPrice=" + cabinet.netPrice());
System.out.println("discountPrice=" + cabinet.discountPrice());
}
}
import java.util.*;
abstract class Equipment ...{
private String name;
public abstract double netPrice();
public abstract double discountPrice();
public boolean add(Equipment equipment) ...{
return false;
}
public boolean remove(Equipment equipment) ...{
return false;
}
public Iterator iter() ...{
return null;
}
public Equipment(final String name) ...{
this.name = name;
}
}
class Disk extends Equipment ...{
public Disk(String name) ...{
super(name);
}
public double netPrice() ...{
return 1.;
}
public double discountPrice() ...{
return .5;
}
}
abstract class CompositeEquipment extends Equipment ...{
private int i = 0;
private List equipment = new ArrayList();
public CompositeEquipment(String name) ...{
super(name);
}
public boolean add(Equipment equipment) ...{
this.equipment.add(equipment);
return true;
}
public double netPrice() ...{
double netPrice = 0.;
Iterator iter = equipment.iterator();
while (iter.hasNext())
netPrice += ((Equipment) iter.next()).netPrice();
return netPrice;
}
public double discountPrice() ...{
double discountPrice = 0.;
Iterator iter = equipment.iterator();
while (iter.hasNext())
discountPrice += ((Equipment) iter.next()).discountPrice();
return discountPrice;
}
public Iterator iter() ...{
return equipment.iterator();
}
public boolean hasNext() ...{
return i < equipment.size();
}
public Object next() ...{
if (hasNext())
return equipment.get(i++);
else
throw new NoSuchElementException();
}
}
class Chassis extends CompositeEquipment ...{
public Chassis(String name) ...{
super(name);
}
public double netPrice() ...{
return 1. + super.netPrice();
}
public double discountPrice() ...{
return .5 + super.discountPrice();
}
}
class Cabinet extends CompositeEquipment ...{
public Cabinet(String name) ...{
super(name);
}
public double netPrice() ...{
return 1. + super.netPrice();
}
public double discountPrice() ...{
return .5 + super.discountPrice();
}
}
public class CompositeTest ...{
public static void main(String[] args) ...{
Cabinet cabinet = new Cabinet("Tower");
Chassis chassis = new Chassis("PC Chassis");
cabinet.add(chassis);
chassis.add(new Disk("10 GB"));
System.out.println("netPrice=" + cabinet.netPrice());
System.out.println("discountPrice=" + cabinet.discountPrice());
}
}
- Composite
- composite
- composite
- Composite
- Composite
- Composite
- Composite
- Composite
- Composite
- Composite
- Composite
- Composite模式
- composite 模式
- composite-id
- composite模式
- iterator&composite
- Composite模式
- Composite模式
- 数据库技术交流--函数篇:
- C++
- 跳骚的高度
- lr关于录制CA证书的确认问题。
- web弹出窗体方法
- Composite
- 双体实训策划人:软件人才的一个习惯、两种能力
- 如何删除多条记录
- C#3.0之LINQ(3)
- 三行代码 与 一天半
- 关于剧本的创作
- FREEBSD下JDK的安装配置
- 构建文件格式转换服务器
- js等比缩放图片