public String getDescription() { return description; }
时间: 2024-03-28 10:36:30 浏览: 16
这段代码是Food类中的一个公有方法getDescription,该方法返回一个字符串类型的description属性值。
通过定义这个方法,可以让其他类访问Food对象的description属性,而不需要将description属性设置为public类型。这样可以保护description属性,避免在其他类中对其进行非法修改。同样地,也可以定义其他类似的访问方法来获取或修改其他属性值,以提高代码的封装性和安全性。
相关问题
c#反射获取description
可以使用反射获取 C# 中枚举值的 Description 特性。具体的代码实现如下:
首先,定义一个枚举类型,并在枚举值上使用 Description 特性:
```
public enum Colors
{
[Description("红色")]
Red,
[Description("绿色")]
Green,
[Description("蓝色")]
Blue
}
```
接下来,可以使用如下代码获取枚举值的 Description 特性:
```
public static string GetDescription(Enum value)
{
FieldInfo field = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[])field.GetCustomAttributes(typeof(DescriptionAttribute), false);
return attributes.Length > 0 ? attributes[0].Description : value.ToString();
}
```
然后,可以在代码中使用 GetDescription 方法获取枚举值的 Description 特性,如下所示:
```
Colors color = Colors.Red;
string description = GetDescription(color); // 获取 "红色" 字符串
```
课程目标4:能的够从23种软件设计模式中选择恰当的软件设计模式对复杂的软件开发项目进行分析、设计、开发、测试和验证 题目:设计一个简单的咖啡店系统,需要支特下单、制作咖啡、送餐等功能。其中,咖啡分为浓缩咖啡、美式咖啡和拿铁咖啡, 每种咖啡可添不同口 味的糖浆、牛奶和奶泡。咖啡的成本根据咖啡类型和添加的配料不同而有所区别。请使用面向对象的思想,并使用适当的设计模式来实现该咖啡店系 统。请提供类的设计和相关的代码实现。(要求先说明采用了那些模式,再设计java代码,把代码复制发到答题框。)
本题可以采用以下设计模式:
1. 工厂模式:根据用户选择的咖啡类型和配料,生产相应的咖啡对象。
2. 装饰器模式:用于动态扩展咖啡对象的行为,比如添加糖浆、牛奶和奶泡等。
3. 策略模式:用于根据用户的选择计算咖啡的成本。
以下是Java代码实现:
```java
// 咖啡接口
public interface Coffee {
public double getCost();
public String getDescription();
}
// 浓缩咖啡类
public class Espresso implements Coffee {
private final String description;
public Espresso() {
description = "Espresso";
}
public double getCost() {
return 1.99;
}
public String getDescription() {
return description;
}
}
// 美式咖啡类
public class Americano implements Coffee {
private final String description;
public Americano() {
description = "Americano";
}
public double getCost() {
return 0.99;
}
public String getDescription() {
return description;
}
}
// 拿铁咖啡类
public class Latte implements Coffee {
private final String description;
public Latte() {
description = "Latte";
}
public double getCost() {
return 2.49;
}
public String getDescription() {
return description;
}
}
// 装饰器类
public abstract class Decorator implements Coffee {
protected Coffee coffee;
public Decorator(Coffee coffee) {
this.coffee = coffee;
}
public double getCost() {
return coffee.getCost();
}
public String getDescription() {
return coffee.getDescription();
}
}
// 糖浆装饰器类
public class SyrupDecorator extends Decorator {
private final String syrup;
public SyrupDecorator(Coffee coffee, String syrup) {
super(coffee);
this.syrup = syrup;
}
public double getCost() {
return super.getCost() + 0.5;
}
public String getDescription() {
return super.getDescription() + ", " + syrup + " syrup";
}
}
// 牛奶装饰器类
public class MilkDecorator extends Decorator {
private final String milk;
public MilkDecorator(Coffee coffee, String milk) {
super(coffee);
this.milk = milk;
}
public double getCost() {
return super.getCost() + 0.7;
}
public String getDescription() {
return super.getDescription() + ", " + milk + " milk";
}
}
// 奶泡装饰器类
public class FoamDecorator extends Decorator {
public FoamDecorator(Coffee coffee) {
super(coffee);
}
public double getCost() {
return super.getCost() + 0.3;
}
public String getDescription() {
return super.getDescription() + ", foam";
}
}
// 咖啡工厂类
public class CoffeeFactory {
public static Coffee createCoffee(String coffeeType) {
if (coffeeType.equals("espresso")) {
return new Espresso();
} else if (coffeeType.equals("americano")) {
return new Americano();
} else if (coffeeType.equals("latte")) {
return new Latte();
} else {
return null;
}
}
}
// 示例程序
public class CoffeeShop {
public static void main(String[] args) {
Coffee coffee = CoffeeFactory.createCoffee("latte");
coffee = new SyrupDecorator(coffee, "vanilla");
coffee = new MilkDecorator(coffee, "almond");
coffee = new FoamDecorator(coffee);
System.out.println(coffee.getDescription() + " costs $" + coffee.getCost());
}
}
```