工厂设计模式
interface Animal{
void eat();
void sleep();
void move();
}
class Dog implements Animal{
public void eat(){
System.out.println("狗吃");
}
public void sleep(){
System.out.println("狗睡");
}
public void move(){
System.out.println("狗动");
}
public void lookHouse(){
System.out.println("狗看门");
}
}
class Wolf implements Animal{
public void eat(){
System.out.println("狼吃");
}
public void sleep(){
System.out.println("狼睡");
}
public void move(){
System.out.println("狼动");
}
public void shout(){
System.out.println("狼嗷嗷叫");
}
}
/**
* 工厂类的主要职责:生产对象
*/
class SimpleFactory{
/**
* 工厂中的方法都是公共的静态的返回接口类型的方法
*/
public static Animal getInstance(String type){
if("dog".equals(type)){
return new Dog();
}else if("wolf".equals(type)){
return new Wolf();
}else {
System.out.println("无效的类型");
return null;
}
}
static void print(Animal al){
if(al!=null){
al.eat();
al.sleep();
al.move();
if(al instanceof Dog){
Dog dog=(Dog)al;
dog.lookHouse();
}else if(al instanceof Wolf){
Wolf wolf=(Wolf)al;
wolf.shout();
}
}
}
static void exe(){
Animal dog=SimpleFactory.getInstance("dog");
Animal wolf=SimpleFactory.getInstance("wolf");
Animal al=SimpleFactory.getInstance("fox");
SimpleFactory.print(dog);
SimpleFactory.print(wolf);
SimpleFactory.print(al);
}
}
public class TestSimpleFactoryDemo08{
public static void main(String[] args){
/*Animal dog=new Dog();
dog.eat();
dog.sleep();
dog.move();
Animal wolf=new Wolf();
wolf.eat();
wolf.sleep();
wolf.move();*/
/*
Animal dog=new Dog();
Animal wolf=new Wolf();
print(dog);
print(wolf);
*/
SimpleFactory.exe();
}
}
工厂2
import java.util.*;
interface Animal{
void sleep();
}
class Dog implements Animal{
void look(){
System.out.println("看家");
}
public void sleep(){
System.out.println("狗睡觉");
}
}
class Cat implements Animal{
void catchfash(){
System.out.println("抓鱼");
}
public void sleep(){
System.out.println("猫睡觉");
}
}
class Factory{
public static Animal fact(String a){
if(a.equals("cat")){
return new Cat();
}else if(a.equals("dog")){
return new Dog();
}else{
return null;
}
}
}
class Demo103{
public static void main(String[] a){
Factory fa=new Factory();
System.out.print("请输入狗或猫:");
Scanner sc=new Scanner(System.in);
fa.fact(sc.next()).sleep();
}
}

浙公网安备 33010602011771号