写一个简单的java设计模式代码
时间: 2023-03-12 22:54:33 浏览: 68
public class Singleton {
private static Singleton instance; // 私有构造函数,防止被实例化
private Singleton() {} public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
相关问题
写一个Java状态设计模式代码
### 回答1:
public class StatePattern {
private State currentState;
// Getters and setters
public void setState(State state){
this.currentState = state;
}
public State getState(){
return currentState;
}
public void doAction(){
this.currentState.doAction();
}
}public interface State {
public void doAction();
}public class StateA implements State {
@Override
public void doAction(){
System.out.println("执行状态A操作");
}
}public class StateB implements State {
@Override
public void doAction(){
System.out.println("执行状态B操作");
}
}public class TestStatePattern {
public static void main(String[] args){
StatePattern statePattern = new StatePattern();
statePattern.setState(new StateA());
statePattern.doAction();
statePattern.setState(new StateB());
statePattern.doAction();
}
}我可以给你示例一个Java状态设计模式的代码:public class StatePattern {private State currentState;// Getters and setterspublic void setState(State state){this.currentState = state;public State getState(){return currentState;public void doAction(){this.currentState.doAction();}public interface State {public void doAction();}public class StateA implements State {@Overridepublic void doAction(){System.out.println("执行状态A操作");}public class StateB implements State {@Overridepublic void doAction(){System.out.println("执行状态B操作");}public class TestStatePattern {public static void main(String[] args){StatePattern statePattern = new StatePattern();statePattern.setState(new StateA());statePattern.doAction();statePattern.setState(new StateB());statePattern.doAction();}}
### 回答2:
状态设计模式(State Design Pattern)是一种行为型设计模式,它允许一个对象在内部状态改变时改变其行为。这种模式将对象的状态封装成一个独立的类,使得对象的状态可以相互转换而不会影响其它部分。
以下是一个使用Java实现状态设计模式的简单例子:
首先,我们定义一个接口State,表示状态对象的通用行为:
```java
public interface State {
void handle();
}
```
然后,我们定义几个具体的状态类,实现State接口:
```java
public class StartState implements State {
@Override
public void handle() {
System.out.println("启动状态");
}
}
public class StopState implements State {
@Override
public void handle() {
System.out.println("停止状态");
}
}
public class PauseState implements State {
@Override
public void handle() {
System.out.println("暂停状态");
}
}
```
接下来,我们定义一个Context类,用来维护当前状态,并在状态改变时触发相应的行为:
```java
public class Context {
private State currentState;
public Context() {
this.currentState = new StopState(); // 初始状态为停止状态
}
public void setState(State state) {
this.currentState = state;
}
public void request() {
currentState.handle();
}
}
```
最后,我们可以使用这些类来展示状态设计模式的使用:
```java
public class Main {
public static void main(String[] args) {
Context context = new Context();
context.request(); // 输出:停止状态
context.setState(new StartState());
context.request(); // 输出:启动状态
context.setState(new PauseState());
context.request(); // 输出:暂停状态
}
}
```
通过使用状态设计模式,我们将对象的状态和行为解耦,使得状态的变化可以独立于对象的行为。这样,我们可以在不改变对象自身的情况下改变其行为,从而实现更高度的灵活性和可扩展性。
帮我用java写一个迭代器设计模式代码
好的,这是答案:
首先,需要定义一个接口,用于规范迭代器对象需要实现的方法:
```
public interface Iterator<T> {
boolean hasNext(); // 判断是否还有下一个元素
T next(); // 获取下一个元素
}
```
接下来需要定义一个可迭代对象的接口,用于规范可迭代对象需要实现的方法:
```
public interface Iterable<T> {
Iterator<T> iterator(); // 获取迭代器对象
}
```
接下来,我们使用一个示例来说明如何使用迭代器设计模式。定义一个迭代器内部类,并在外部类中实现Iterable接口:
```
import java.util.ArrayList;
public class IterableClass<T> implements Iterable<T> {
private ArrayList<T> list = new ArrayList<>();
// 添加元素
public void add(T t) {
list.add(t);
}
// 获取元素
public T get(int index) {
return list.get(index);
}
// 获取元素数量
public int size() {
return list.size();
}
// 获取迭代器对象
@Override
public Iterator<T> iterator() {
return new Iterator<T>() {
private int index = 0;
@Override
public boolean hasNext() {
return index < list.size();
}
@Override
public T next() {
return list.get(index++);
}
};
}
public static void main(String[] args) {
IterableClass<String> iterableClass = new IterableClass<>();
iterableClass.add("hello");
iterableClass.add("world");
iterableClass.add("java");
// 使用for循环遍历元素
for (String str : iterableClass) {
System.out.println(str);
}
}
}
```
最后我们运行main方法,得到以下结果:
```
hello
world
java
```
以上是一个简单的迭代器设计模式的Java代码示例,希望能够对您有所帮助。