일반 모드 예
6012 단어 예.
공장 모델
package login.sj;
class Factory{
public static Object getObject(Class<?> class1){
try {
Object object = class1.newInstance();
return object;
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
abstract class AbsFactory{
abstract Object create(Class<?> class1);
}
public class FactoryTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Book book = (Book) Factory.getObject(Book.class);
book.setName("xxxxx");
}
}
단일 모드
package login.sj;
class Singleton {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private Singleton() {
}
// , ?
// private
private static Singleton instance = new Singleton();
// class ,
public static Singleton getInstance() {
return instance;
}
/*
* private static Singleton instance = null;
*
* public static synchronized Singleton getInstance() {
*
* // , , // , ! if
* (instance==null) instance=new Singleton(); return instance; }
*/
}
public class SingletonTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Singleton singleton = Singleton.getInstance();
singleton.setName("test1");
System.out.println(singleton.getName());
Singleton singleton2 = Singleton.getInstance();
singleton2.setName("test2");
System.out.println(singleton.getName());
}
}
프록시 모드
package login.sj;
import java.lang.reflect.InvocationTargetException;
class People{
void say(){
System.out.println("say");
}
}
abstract class MyProxy{
/**
* @param args
*/
private Class<?> class1;
private String methodName;
public Class<?> getClass1() {
return class1;
}
public void setClass1(Class<?> class1) {
this.class1 = class1;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public MyProxy(Class<?> class1,String methodName) {
// TODO Auto-generated constructor stub
this.class1 = class1;
this.methodName = methodName;
}
public void invoke(){
try {
Object object = class1.newInstance();
object.getClass().getDeclaredMethod(methodName).invoke(object);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public abstract void after();
public abstract void before();
}
public class ProxyTest extends MyProxy{
public ProxyTest(Class<?> class1, String methodName) {
super(class1, methodName);
// TODO Auto-generated constructor stub
}
@Override
public void after() {
// TODO Auto-generated method stub
System.out.println(" ");
}
@Override
public void before() {
// TODO Auto-generated method stub
System.out.println(" ");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ProxyTest proxyTest = new ProxyTest(People.class, "say");
proxyTest.before();
proxyTest.invoke();
}
}
관찰자 모드
package login.sj;
import java.util.Observable;
import java.util.Observer;
class Book extends Observable{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
setChanged();
notifyObservers(name);
}
}
class ObserverT implements Observer{
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
System.out.println(o+"----------"+arg);
if(o instanceof Book){
System.out.println("book name set :"+arg);
}
}
}
public class ObserverTest extends Observable{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Book book = new Book();
ObserverT observerT = new ObserverT();
book.addObserver(observerT);
book.setName("find");
}
}