package designmode.mycelve.Behavi;
import designmode.mycelve.bo1.Sleep;
import designmode.mycelve.bo2.Talk;
/**
* * * GOOK LUCK * *
*
* @Author: wkn,
* @Date: 2020/2/16.
* @DESC: 定義一個能承載說話和睡覺的動物模型,這個模型不是具體的對象,
*/
public abstract class AnimalMode {
public Sleep sleep;
public Talk talk;
public AnimalMode() {
}
public void setSleep(Sleep sleep) {
this.sleep = sleep;
}
public void setTalk(Talk talk) {
this.talk = talk;
}
/**
* 內部對象的睡覺方法
*/
public void slee() {
sleep.slee();
}
/**
* 內部對象的說話方法
*/
public void tal() {
talk.tal();
}
/**
* 動物模型固有的方法1
*/
public void eat() {
System.out.println("喫飯");
}
/**
* 動物模型固有的方法1
*/
public void swim() {
System.out.println("洗澡");
}
public abstract void display();
}
2.1:對象模型定義好之後,確定具體的對象模型和領域行爲
/**
* * * GOOK LUCK * *
*
* @Author: wkn,
* @Date: 2020/2/16.
* @DESC:
*/
public class Cat extends AnimalMode {
@Override
public void display() {
System.out.println("貓實體");
}
}
/**
* * * GOOK LUCK * *
*
* @Author: wkn,
* @Date: 2020/2/16.
* @DESC:
*/
public class Dog extends AnimalMode {
// public Dog() {
// sleep = new SideSleep();
// talk = new GuguTalk();
// }
@Override
public void display() {
System.out.println("狗實體");
}
}
package designmode.mycelve;
import designmode.mycelve.Behavi.AnimalMode;
import designmode.mycelve.animal.Cat;
import designmode.mycelve.animal.Dog;
import designmode.mycelve.bo1.LieSleep;
import designmode.mycelve.bo1.SideSleep;
import designmode.mycelve.bo2.GuguTalk;
import designmode.mycelve.bo2.JijiTalk;
import org.junit.Test;
/**
* * * GOOK LUCK * *
*
* @Author: wkn,
* @Date: 2020/2/16.
* @DESC: 策略模式測試類
*/
public class MyCeleTest {
@Test
public void test12() {
AnimalMode dog = new Dog();
AnimalMode cat = new Cat();
dog.display();
dog.eat();
dog.setSleep(new SideSleep());
dog.slee();
dog.setTalk(new JijiTalk());
dog.tal();
System.out.println("------------------------------------------");
cat.display();
cat.eat();
cat.setSleep(new LieSleep());
cat.slee();
cat.setTalk(new GuguTalk());
cat.tal();
}
}