您现在的位置是:主页 > news > 出口外贸网站/论坛平台
出口外贸网站/论坛平台
admin2025/5/5 17:41:40【news】
简介出口外贸网站,论坛平台,个人网页制作模板免费,做网站排名大概要多少设计模式——简单工厂模式 1.适用范围:工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对如何创建对象不关心。 2.缺点:工厂类的职责过重,不易于扩展过于复杂的产品结构。 3.实例: //动…
出口外贸网站,论坛平台,个人网页制作模板免费,做网站排名大概要多少设计模式——简单工厂模式
1.适用范围:工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对如何创建对象不关心。 2.缺点:工厂类的职责过重,不易于扩展过于复杂的产品结构。
3.实例:
//动…
设计模式——简单工厂模式
1.适用范围:工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对如何创建对象不关心。
2.缺点:工厂类的职责过重,不易于扩展过于复杂的产品结构。
3.实例:
//动物接口
public interface Animal {public void play();
}
//猫类
public class Cat implements Animal {@Overridepublic void play() {System.out.println("遛猫");}
}
//狗类
public class Dog implements Animal {@Overridepublic void play() {System.out.println("遛狗");}
}
//动物简单工厂类
public class AnimalFactory {public Animal create1(String name){if("cat".equals(name)){return new Cat();}else if ("dog".equals(name)){return new Dog();}else{return null;}}//create1:若需要增加动物,则要改动create方法,不符合开闭原则,因此采用反射机制// 采用反射机制public Animal create(String className){try {if (!(null == className || "".equals(className))){//需要强转类型return (Animal) Class.forName(className).newInstance();}} catch (Exception e) {e.printStackTrace();}return null;}//方法参数为字符串,同时需要类型的强制转换//对反射代码的优化public Animal create(Class<? extends Animal> sonClass) {try {if (null != sonClass) {return sonClass.newInstance();}} catch (Exception e) {e.printStackTrace();}return null;}
}
import org.junit.Test;//测试类
public class TestSimpleFactory {@Testpublic void test1(){AnimalFactory animalFactory = new AnimalFactory();Animal animal = animalFactory.create1("cat");animal.play();}//反射代码的测试@Testpublic void test2(){AnimalFactory animalFactory = new AnimalFactory();Animal animal = animalFactory.create("com.sqx.simpleFactory.Dog");animal.play();}//反射代码优化的测试@Testpublic void test3(){AnimalFactory animalFactory = new AnimalFactory();Animal animal = animalFactory.create(Dog.class);animal.play();}
}