用面向对象写一个择偶标准代码
时间: 2024-09-15 18:03:42 浏览: 7
当然,我们可以创建一个简单的面向对象模型来表示一个择偶标准。在这个例子中,我们将定义一个`Person`类和一个或多个描述具体择偶条件的`Criteria`类。这里我们假设有一些常见的标准如年龄、兴趣爱好、职业等。
```java
// 定义Person类,包含基本属性
class Person {
private int age;
private String name;
private List<String> interests;
private String occupation;
// 构造器
public Person(int age, String name, List<String> interests, String occupation) {
this.age = age;
this.name = name;
this.interests = interests;
this.occupation = occupation;
}
// 获取属性的方法
public int getAge() { return age; }
public String getName() { return name; }
public List<String> getInterests() { return interests; }
public String getOccupation() { return occupation; }
}
// 创建一个抽象的Criteria接口,用于定义择偶标准
interface Criteria {
boolean meetsCriterion(Person person);
}
// 实现具体的择偶标准,例如年龄必须在20到30之间
class AgeRange implements Criteria {
private int minAge;
private int maxAge;
public AgeRange(int minAge, int maxAge) {
this.minAge = minAge;
this.maxAge = maxAge;
}
@Override
public boolean meetsCriterion(Person person) {
return person.getAge() >= minAge && person.getAge() <= maxAge;
}
}
// 另一个标准,比如有共同的兴趣爱好
class CommonHobbies implements Criteria {
private List<String> hobbies;
public CommonHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
@Override
public boolean meetsCriterion(Person person) {
return hobbies.stream().anyMatch(person.getInterests()::contains);
}
}
// 示例使用
public class Main {
public static void main(String[] args) {
Person candidate = new Person(25, "Alice", Arrays.asList("reading", "traveling"), "engineer");
Criteria ageRange = new AgeRange(20, 30);
Criteria commonHobby = new CommonHobbies(Arrays.asList("reading"));
if (ageRange.meetsCriterion(candidate)) {
System.out.println(candidate.getName() + " meets the age range criteria.");
} else {
System.out.println(candidate.getName() + " does not meet the age range criteria.");
}
if (commonHobby.meetsCriterion(candidate)) {
System.out.println(candidate.getName() + " has a common hobby with the desired set.");
} else {
System.out.println(candidate.getName() + " doesn't have a common hobby.");
}
}
}
```