インタフェースの適用:ポリシー・モード
1451 ワード
ストラテジーパターン(Strategy Pattern)は、一連のアルゴリズムを定義し、各アルゴリズムをカプセル化し、互いに置き換えて使用することができ、ストラテジーパターンは、その顧客アプリケーションとは独立してアルゴリズムを変化させる.
OO設計原則:インタフェース向けプログラミング(抽象プログラミング向け) パッケージ変化 多用組合せ、少用継承
OO設計原則:
package com.main;
//
public class StrategyPattern {
public static void main(String[] args) {
Duck trueDuck = new TrueDuck(" ");
trueDuck.setSwim(new SwimImpl());//
trueDuck.swim();
System.out.println("--------------");
Duck modelDuck = new ModelDuck(" ");
modelDuck.setSwim(new NotSwimImpl());//
modelDuck.swim();
}
}
// ( )
interface Swimable {
public void swim();
}
// Swimable 1
class SwimImpl implements Swimable {
@Override
public void swim() {
System.out.println(" ");
}
}
// Swimable 2
class NotSwimImpl implements Swimable {
@Override
public void swim() {
System.out.println(" ");
}
}
class Duck {
private String name;
// ,
private Swimable swim;
public void setSwim(Swimable swim) {
this.swim = swim;
}
public Duck(String name) {
this.name = name;
}
public void swim() {
System.out.print(" " + name + ",");
swim.swim();
}
}
//
class TrueDuck extends Duck {
public TrueDuck(String name) {
super(name);
}
}
//
class ModelDuck extends Duck {
public ModelDuck(String name) {
super(name);
}
}