Avatar
0
Nguyễn Thái Sơn Professional
Nguyễn Thái Sơn Professional
Có nên code inner class, class trong class
Anh ơi, có nên code inner class :

class A {
    class Dog {
        private String name;
        private String type;
    }
}

Như vậy, việc sử dụng inner class đã phá vỡ quy tắc Single responsibility trong Solid, vậy khi nào dùng inner class là hợp lý nhất ạ

  • Answer
Remain: 5
1 Answer
Avatar
tvd12 Professional
tvd12 Professional
Việc sử dụng inner class không hề phá vỡ quy tắc Single responsibility trong Solid bởi vì quy tắc này nói rằng: mỗi lớp mỗi hàm nên thực hiện 1 chức năng, như vậy việc em khai báo 2 lớp ở cùng 1 nơi nhưng chúng vẫn thực hiện đúng chức năng của mình thì vẫn ok.

Inner class nên dùng khi các lớp inner này có liên quan mật thiết và bổ trợ cho lớp public, thường sẽ là các lớp private.

Ví dụ:

public class StringConverter {
	
	private stringToIntConverter = new StringToIntConverter();
	private stringToLongConverter = new StringToLongConverter();
	
	public  T convert(String value, Class outType) {
		if (outType == int.class) {
			return stringToIntConverter.convert(value);
		}
		if (outType == long.class) {
			return stringToLongConverter.convert(value);
		}
	}

	private final class StringToIntConverter implements Converter {
		// logic
	}

	private final class StringToLongConverter implements Converter {
		// logic
	}

}
  • 0
  • Reply