记录本人的学习经历
1、简单工厂模式是什么
使用者不关心对象是怎么创建的,只需要传入参数就行。
2、工厂的实现
public interface ITestMyself {
public void resultString();
}
public class TestMyselfOne implements ITestMyself {
public void resultString(){
System.out.println("One");
}
}
public class TestMyselfTwo implements ITestMyself{
public void resultString(){
System.out.println("TWO");
}
}
//简单工厂具体实现
public class MyFactory {
public ITestMyself createObject(String name){
if("one".equalsIgnoreCase(name)){
return new TestMyselfOne();
}else if("two".equalsIgnoreCase(name)){
return new TestMyselfTwo();
}else {
return null;
}
}
}
//Test类
public class SimpleFactory {
public static void main(String[] args) {
MyFactory myFactory = new MyFactory();
ITestMyself one = myFactory.createObject("one");
one.resultString();
}
}
3、优化写法
虽然简单工厂的一个特性就是负责比较少对象的创建,但每次新增都要对MyFactory进行添加修改。我能不能写一个一劳永逸的方式,不管ITestMyself实现类怎么增加,工厂始终不变。
public class MyFactory {
//<? extends ITestMyself> 代表只有实现了ITestMyself才能进来,否则直接就在编译阶段报错了
public ITestMyself createObject(Class<? extends ITestMyself> clazz){
try {
if(clazz != null){
return clazz.newInstance();
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}
public class SimpleFactory {
public static void main(String[] args) {
MyFactory myFactory = new MyFactory();
myFactory.createObject(TestMyselfTwo.class).resultString();
}
}