단순 공장 모델 개선
2642 단어 반사단순 공장 설계 모델 의 개선
다음은 간단 한 공장 설계 입 니 다.
interface Fruit{
public void eat();
}
class Apple implements Fruit{
@Override
public void eat() {
System.out.println("** **");
}
}
class Orange implements Fruit{
@Override
public void eat() {
System.out.println("** **");
}
}
class Factory{
public static Fruit getInstance(String className){
if("apple".equals(className)){
return new Apple();
}
if("orange".equals(className)){
return new Orange();
}
return null;
}
}
public class FactoryDemo {
public static void main(String[] args) {
Factory.getInstance("apple").eat();
}
}
코드 를 분석 해 보면 그 중 에 문제 가 하나 있어 서 하위 클래스 를 확장 할 수 없다 는 것 을 알 수 있다.다음은 반사 체 제 를 통 해 개선 하고 클래스 이름과 인 스 턴 스 의 대응 관 계 를 속성 파일 에 저장 합 니 다. fruit. properties 는 정적 인 방법 으로 불 러 옵 니 다.
다음은 개 선 된 코드 입 니 다.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
interface Fruit{
public void eat();
}
class Apple implements Fruit{
@Override
public void eat() {
System.out.println("** **");
}
}
class Orange implements Fruit{
@Override
public void eat() {
System.out.println("** **");
}
}
// , , key = value
class Init{
public static Properties getProperties(){
File file = new File("src//org//wzy//fruit.properties");
Properties pro = null;
if(file.exists()){
pro = new Properties();
try{
InputStream in = new FileInputStream(file);
pro.load(in);
}catch(Exception e){
e.printStackTrace();
}
}else{
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return pro;
}
}
class Factory{
public static Fruit getInstance(String className){
Fruit fruit = null;
try {
fruit = (Fruit) Class.forName(className).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return fruit;
}
}
public class FactoryDemo {
public static void main(String[] args) {
Properties pro = Init.getProperties();
String className = (String) pro.get("apple");
Factory.getInstance(className).eat();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 반사 구현 Aop 에이전트 상세 정보반사를 이용하여 JDK의 동적 에이전트, 즉 AOP의 AOP 에이전트를 생성하여 목표 대상을 대체하고 코드에 증강을 직입한다. 프록시 인터페이스 정의 JDKf 동적 에이전트는 인터페이스에 동적 에이전트만 만들 수 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.