1.简单工厂模式:
1)概念:
也称为"静态工厂方法模式",主要作用负责某些类的实例的创建过程!
2)利弊:
优点:通过工厂类完成各个类的对象的创建
弊端:当有新的类型增加,需要不断的修改工厂类,维护性难度大!
3)案例:
* 动物类
*/
public class Animal {
public void eat(){
System.out.println("动物都需要吃饭...");
}
public void sleep(){
System.out.println("动物都需要休息...");
}
}
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃骨头");
}
@Override
public void sleep() {
System.out.println("狗躺着睡...");
}
}
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼...");
}
@Override
public void sleep() {
System.out.println("猫趴着睡");
}
}
public class Pig extends Animal{
@Override
public void eat() {
System.out.println("猪吃白菜...");
}
@Override
public void sleep() {
System.out.println("猪侧着睡");
}
}
* 动物工厂类
*/
public class AnimalFactory {
//构造方法私有化
private AnimalFactory(){}
//提供静态功能
/* public static Dog creatDog(){//创建狗
return new Dog() ;
}
public static Cat createCat(){//创建猫
return new Cat() ;
}
public static Pig creatPig(){//创建猪
return new Pig() ;
}*/
//优化;抽象类多态
public static Animal createAnimal(Object obj){ //向上转型:
if(obj instanceof Cat){
return new Cat() ;
}else if(obj instanceof Dog){
return new Dog() ;
}else if(obj instanceof Pig){
return new Pig() ;
}
return null ;
}
}
public class SimpleFactory {
public static void main(String[] args) {
//具体类
Cat c = new Cat() ;
c.eat();
c.sleep();
Dog d = new Dog() ;
d.eat();
d.sleep();
System.out.println("--------------------------------") ;
//提供一个工厂类,负责这些动物的创建
//创建一只狗
/* Dog dog = AnimalFactory.creatDog();
dog.eat();
dog.sleep();
Cat cat = AnimalFactory.createCat();
cat.eat();
cat.sleep();
Pig pig = AnimalFactory.creatPig() ;
pig.eat();
pig.sleep();*/
//问题:随着新的类型增加,需要修改工厂类,而且代码都是写死的!
Animal animal = AnimalFactory.createAnimal(new Cat());
if(animal!=null){
animal.eat();
animal.sleep();
}
}
}