编写一个android项目,里面包括组合模式,适配器模式,建造者模式,观察者模式和迭代器模式
时间: 2023-06-29 14:15:13 浏览: 105
观察者模式的缺点-23种设计模式PPT合集
好的,我理解了你的要求。以下是一个简单的 Android 项目,其中包括了组合模式、适配器模式、建造者模式、观察者模式和迭代器模式的示例代码。
首先,我们先创建一个基础类 `Component`,作为组合模式中的组件。它包含了添加、删除和获取子组件的方法。
```java
public abstract class Component {
public abstract void add(Component component);
public abstract void remove(Component component);
public abstract Component getChild(int index);
}
```
然后,我们创建两个继承自 `Component` 的类:`Leaf` 和 `Composite`。`Leaf` 表示组合模式中的叶子节点,它没有子节点;`Composite` 表示组合模式中的组合节点,它可以包含其他子节点。
```java
public class Leaf extends Component {
@Override
public void add(Component component) {
// 叶子节点没有子节点,所以不需要实现添加方法
}
@Override
public void remove(Component component) {
// 叶子节点没有子节点,所以不需要实现删除方法
}
@Override
public Component getChild(int index) {
// 叶子节点没有子节点,所以返回 null
return null;
}
}
public class Composite extends Component {
private List<Component> components = new ArrayList<>();
@Override
public void add(Component component) {
components.add(component);
}
@Override
public void remove(Component component) {
components.remove(component);
}
@Override
public Component getChild(int index) {
return components.get(index);
}
}
```
接下来,我们创建一个适配器模式的示例。我们假设我们的 Android 应用需要显示一个列表,但是数据源是一个数组,我们需要将数组转换为列表形式。我们可以使用适配器模式来实现这一功能。
```java
public class ArrayAdapter {
private String[] data;
public ArrayAdapter(String[] data) {
this.data = data;
}
public List<String> getDataList() {
List<String> list = new ArrayList<>();
for (String str : data) {
list.add(str);
}
return list;
}
}
```
然后,我们创建一个建造者模式的示例。我们假设我们需要创建一个 `Person` 类,包含姓名、年龄和性别三个属性。我们可以使用建造者模式来创建 `Person` 对象。
```java
public class Person {
private String name;
private int age;
private String gender;
private Person(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.gender = builder.gender;
}
public static class Builder {
private String name;
private int age;
private String gender;
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setAge(int age) {
this.age = age;
return this;
}
public Builder setGender(String gender) {
this.gender = gender;
return this;
}
public Person build() {
return new Person(this);
}
}
}
```
使用建造者模式创建 `Person` 对象的示例代码:
```java
Person person = new Person.Builder()
.setName("张三")
.setAge(20)
.setGender("男")
.build();
```
接下来,我们创建一个观察者模式的示例。我们假设我们的 Android 应用需要实现一个计时器,每隔一秒钟就会通知所有观察者。我们可以使用观察者模式来实现这一功能。
首先,我们创建一个 `Timer` 类,实现计时器的功能:
```java
public class Timer {
private TimerTask timerTask;
private TimerCallback timerCallback;
public Timer(TimerCallback timerCallback) {
this.timerCallback = timerCallback;
timerTask = new TimerTask() {
@Override
public void run() {
timerCallback.onTick();
}
};
}
public void start() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(timerTask, 0, 1000);
}
}
```
然后,我们创建一个 `TimerCallback` 接口,定义观察者的回调方法:
```java
public interface TimerCallback {
void onTick();
}
```
最后,我们创建一个观察者类 `Observer`,实现 `TimerCallback` 接口中的回调方法:
```java
public class Observer implements TimerCallback {
@Override
public void onTick() {
// 每隔一秒钟执行一次
}
}
```
使用观察者模式创建计时器的示例代码:
```java
Timer timer = new Timer(new Observer());
timer.start();
```
最后,我们创建一个迭代器模式的示例。我们假设我们需要遍历一个列表,我们可以使用迭代器模式来实现这一功能。
首先,我们创建一个 `MyList` 类,实现列表的功能:
```java
public class MyList<T> implements Iterable<T> {
private List<T> list = new ArrayList<>();
public void add(T item) {
list.add(item);
}
public T get(int index) {
return list.get(index);
}
@Override
public Iterator<T> iterator() {
return new MyListIterator();
}
private class MyListIterator implements Iterator<T> {
private int currentIndex = 0;
@Override
public boolean hasNext() {
return currentIndex < list.size();
}
@Override
public T next() {
T item = list.get(currentIndex);
currentIndex++;
return item;
}
}
}
```
使用迭代器模式遍历列表的示例代码:
```java
MyList<String> myList = new MyList<>();
myList.add("Hello");
myList.add("World");
for (String str : myList) {
System.out.println(str);
}
```
这就是一个包含了组合模式、适配器模式、建造者模式、观察者模式和迭代器模式的 Android 项目的示例代码。希望能对你有所帮助!
阅读全文