전체 글(219)
-
디자인패턴_Observer Pattern of Behavioral Pattern
Observer Pattern이란, 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 1:多 객체 의존 관계를 구성하는 패턴 데이터 변경이 발생하는 경우, 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용 Observer(Interface) 데이터 변경을 통보받는 인터페이스 Subject가 Observer 인터페이스의 update() 메서드를 호출 -> ConcreteSubject의 데이터 변경을 ConcreteObserver에 통보 Subject(Class) ConcreteObserver 객체를 관리하는 요소 Observer 인터페이스를 참조해서 ConcreteObserver를 관리하므로, ConcreteObserver를 관리하므로, ConcreteObserver의 ..
2021.01.15 -
디자인패턴_Template Pattern of Behavioral Pattern
템플릿 메서드 패턴 이란, 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴이다. 전체적으로 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화할 때 유용 동일한 기능은 상위 클래스에서 정의하면서, 확장/변화가 필요한 부분만 서브 클래스에서 구현할 수 있도록 한다. AbstractClass -템플릿 메서드를 정의하는 클래스 -하위 클래스에 공통 알고리즘을 정의하고, 하위 클래스에서 구현될 기능을 primitiveMethod 또는 hookMethod로 정의 하는 클래스 ConcreteClass -물려받은 Primitive 메서드 또는 hook 메서드를 구현하는 클래스 -상위 클래스에서 구현된 템플..
2021.01.15 -
Super
부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는데 사용하는 참조 변수 인스턴스 변수명과 지역 변수명이 동일한 경우, this.인스턴스변수로 사용하는 것 처럼 부모클래스와 자식크래스 멤버의 이름이 같은 경우 super를 사용해 구별 class Parent{ int a=10; } class Child extends Parent{ int a= 20; void display(){ System.out.println(a); //20 System.out.println(this.a); //20 System.out.println(super.a); //10 } } public class Inheritance{ public static void main(String[] args){ Child ch = n..
2021.01.15 -
디자인패턴_Command Pattern of Behavioral Pattern
Command Pattern이란, 실행될 기능을 캡슐화해 주어진 여러 기능을 실행할 수 있는 재사용성 높은 클래스를 설계하는 패턴 이벤트 발생시 실행될 기능이 다양하면서도 변경이 피요한 경우 이벤트를 발생시키는 클래스를 변경하지 않고 재사용하고자 할 때 유용 실행될 기능을 캡슐화해 기능의 실행을 요구하는 호출자(Invoker)클래스와 실제 기능을 실행하는 수신자(Receiver)클래스 사이의 의존성을 제거 -> 수신자의 변경에도 호출자의 수정없이 그대로 사용 가능 Invoker 기능의 실행을 요청하는 호출자 클래스 Command 실행될 기능에 대한 인터페이스 -> 실행될 기능에 대해 execute 메서드로 선언 ConcreteCommand 실제로 실행될 기능을 구현 -> Command 인터페이스를 구현 ..
2021.01.14 -
Interface
인터페이스의 구현(Implements)과 상속(Extends) JAVA에서 인터페이스는 개발자 사이의 코드 규약을 정한다. 여러 구현체에서 공통적인 부분을 추상화한다. (다형성) //자바의 인터페이스 : 추상 메서드의 모음 (구현부가 없는 메서드) public interface Practice { void practiceEx(); } 구현부가 없으므로 인터페이스를 만드는 경우 반드시 구현하는 클래스를 만들어야하며, 인터페이스를 구현하기로 한 클래스는 반드시 인터페이스에 명시되어 있는 추상메서드(EX-practiceEx)들을 모두 구현해야한다. public class Example implements Practice { //... @Override public void practiceEx(){ //... ..
2021.01.14 -
포트포워딩
VM에서의 네트워크 주소 != 실제네트워크 주소 예를 들어, Linux 환경에서 웹서버를 구축하려고 하는데 chrom에서 localhost 주소로 접속하는 경우 실제머신이 아닌 VM으로 연결시켜주어야 한다. 이처럼 VM의 Port를 통해 나의 머신에 접속했을 때 VM으로 연결시키는 과정을 "포트포워딩" 이라고 한다. HOW 1. 가상 OS에서 방화벽 포트를 열어준다. *****************CentOS7***************** 기본적으로 보안적 입장에서 외부에서 들어오는 요청은 안전하지 않다고 여겨 방화벽으로 막혀있다. 따라서 포트를 Open해주는 과정이 필요하다. ----방화벽 활성화 상태 확인---- $ systemctl status firewalld ---------방화벽 비활성화--..
2021.01.14