사용자 정의 주석 과 디자인 모드
package shmily.lyp;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @Target
* ElementType.TYPE
* ElementType.METHOD
* ElementType.FIELD
* @Retention
* RetentionPolicy.RUNTIME
*/
@Target(value = {ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@interface TestAnnotaion{
int beanId() default 0; //
String name() default "";
String[] arr();
}
@TestAnnotaion(beanId = 1, name = "shmilylyp", arr = {"1", "2"})
public class Test02 {
@TestAnnotaion(arr = {"3", "4"})
private String name;
// @TestAnnotaion()
private void test002(){}
}
2. 디자인 모델 1. 역할: 중복 이용, 코드 확장, 읽 기 향상, 코드 감소 2. 디자인 모델 의 6 대 원칙 ① 개폐 원칙: 확장 성에 전념,② 리 씨 교체 원칙 을 수정 하 였 습 니 다. 대상 을 대상 으로 ③ 반전 원칙 에 의존 합 니 다. 인터페이스 프로 그래 밍 ④ 인터페이스 격 리 원칙: 인터페이스 분리 ⑤ 디 미트 법칙: 정의 류 는 가능 한 한 다른 유형 과 관계 가 발생 합 니 다 ⑥ 합성 재 활용 원칙: 코드 무 거 운 부담 사용 3, 단일 모델: jvm 에서 하나의 인 스 턴 스 만 있 도록 합 니 다 I: 게으름뱅이 식 - 스 레 드 가 안전 하지 않 습 니 다.필요 할 때 만 들 기
package shmily.lyp;
// jvm
class Singleton {
private static Singleton singleton;
//
private Singleton() {
}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
public class Test03 {
public static void main(String[] args) {
Singleton s1 = Singleton.getSingleton();
Singleton s2 = Singleton.getSingleton();
System.out.println(s1 == s2);
}
}
II: 배 고 픈 한식 - 스 레 드 안전, jvm 프레임 아 때 정례 화
package shmily.lyp;
// jvm
class Singleton1 {
private static Singleton1 singleton = new Singleton1();
//
private Singleton1() {
}
public static Singleton1 getSingleton1() {
return singleton;
}
}
public class Test04 {
public static void main(String[] args) {
Singleton1 s1 = Singleton1.getSingleton1();
Singleton1 s2 = Singleton1.getSingleton1();
System.out.println(s1 == s2);
}
}
4. 공장 모델
package shmily.lyp;
interface Car {
void run();
}
class AoDi implements Car {
@Override
public void run() {
System.out.println(" ");
}
}
class BenChi implements Car {
@Override
public void run() {
System.out.println(" ");
}
}
class CarFactory {
public static Car createCar(String name) {
Car car = null;
switch (name) {
case "BenChi":
car = new BenChi();
break;
case "AoDi":
car = new AoDi();
break;
default:
break;
}
return car;
}
}
public class Test05 {
public static void main(String[] args) {
Car aoDi = CarFactory.createCar("AoDi");
aoDi.run();
}
}
5. 프 록 시 모드 두 가지 모드: 정적 에이전트 (프 록 시 클래스 생 성), 동적 에이전트 (프 록 시 클래스 생 성 필요 없 음, JDK 동적 에이전트 와 CGLIB 에이전트 로 나 뉜 다) I, 정적 에이전트
package shmily.lyp;
interface Hose{
void buyHouse();
}
class Shmilylyp implements Hose{
@Override
public void buyHouse() {
System.out.println(" shmilylyp, ");
}
}
class Proxy implements Hose{
//
private Shmilylyp shmilylyp;
public Proxy(Shmilylyp shmilylyp) {
this.shmilylyp = shmilylyp;
}
@Override
public void buyHouse() {
System.out.println(" , ");
shmilylyp.buyHouse();
System.out.println(" ");
}
}
public class Test06 {
public static void main(String[] args) {
Hose hose = new Proxy(new Shmilylyp());
hose.buyHouse();
}
}
Ⅱ, 동적 에이전트
package shmily.lyp;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
interface House{
void buyHouse();
}
class Shmily implements House{
@Override
public void buyHouse() {
System.out.println(" shmilylyp, ");
}
}
/**
* jdk
*/
class JDKProxy implements InvocationHandler{
private Object oj;
public JDKProxy(Object oj) {
this.oj = oj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(" , ");
Object invoke = method.invoke(oj, args);
System.out.println(" ");
return invoke;
}
}
public class Test07 {
public static void main(String[] args) {
Shmily shmily = new Shmily();
JDKProxy jdkProxy = new JDKProxy(shmily);
House house = (House) Proxy.newProxyInstance(shmily.getClass().getClassLoader(),
shmily.getClass().getInterfaces(), jdkProxy);
house.buyHouse();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.