JavaSE пользовательских аннотаций Patterns + Design

Встроенные аннотации:

(1) @SuppressWarnings быть затем удалена программа предшествует предупреждение Javac компиляции - фаза ИСТОЧНИК
ИСТОЧНИК (2) @deprecated отмеченного пакета, метод, который задает поле устарело ---- стадии
(3) @Overricle Применяя этот маркер указывает , что метод представляет собой способ переписать родительский класс - этап SOURCE

Пользовательская аннотация:

Мета-аннотации роль отвечают за другие примечания аннотаций. Java5.0 стандарт определяет тип четыре мета-аннотаций, которые используются для обеспечения других типов аннотаций указанного. Java5.0 определение элемента аннотации:
@Target
@Target иллюстрирует модифицированный аннотацию целевого диапазона: аннотации могут быть использованы для пакетов, типов (классы, интерфейсы, перечислений, аннотации типа), тип (члена метода, конструктора, члены переменные перечислены значения), аргументы метода и локальные переменные (например, переменный цикл, параметр улова). Используйте цель в объявлении типа аннотаций может быть более ясно , что она изменяет цель.
1.CONSTRUCTOR: Конструктор используется для описания
2.FIELD: для описания полей
3.LOCAL_VARIABLE: локальные переменные , используемые для описания
4.METHOD: метод для описания
5.Package: Пакет для описания
6.PARAMETER: параметр , используемый для описания
7.TYPE: используется для описания класса, интерфейс ( в том числе типа аннотаций), или перечисление декларация
2. @ Retention
выражается необходимость сохранения информации аннотации на какой уровень, используются для описания жизненного цикла нот (т.е. то , что аннотации описаны в диапазоне эффективная)
3. @ документированной
@Documented аннотацию указывает , что записи должны быть записаны JavaDoc инструмент. по умолчанию, Javadoc не содержит аннотации. Однако, если отмечается в заявлении указано @Documented, он будет рассматриваться как JavaDoc инструмент, поэтому информация типа аннотации также будет включена в создаваемом документе, он является маркер аннотацией, ни членов.
4. @ Наследуется
Указав тип аннотаций автоматически наследоваться. Если есть последовательность в аннотации типа декларации юаней примечания, типы аннотаций и запросы пользователей на объявлении класса, класса и декларации класса нет комментариев, то класс суперкласс будет автоматически запрашиваться типы аннотаций. Этот процесс повторяется до тех пор, пока не найдете этот тип комментария, или достичь вершины иерархии классов (объекта).

Пример:

Примечания категории:

@Retention (RetentionPolicy.RUNTIME)
@Target (значение = {ElementType.TYPE})
@interface Таблица {
имя Строка ();
}

@Retention (RetentionPolicy.RUNTIME)
@interface Свойство {
имя String () по умолчанию «»;
ИНТ клыков () по умолчанию 0;
}

Классы сущностей:

@Table (имя = «Студент»)
общественный класс NoteCode {
@property (имя = «student_name», длина = 12)
частная строка studentName;
@Property (имя = «student_age», длина = 12)
частное Integer studentAge;
Строка общественного getStudentName () {
вернуться studentName;
}
Общественного недействительными setStudentName (Строка studentName) {
this.studentName = studentName;
}
Общественное целое getStudentAge () {
вернуть studentAge;
}
Общественного недействительными setStudentAge (целое число studentAge) {
this.studentAge = studentAge;
}

}

Тест категории

static PreparedStatement stmt = null;
static ResultSet rs = null;
static Connection connection=null;
public static void main(String[] args) throws Exception {
	try {
		Class<?> forName = Class.forName("com.hm.NoteCode");//拿到类对象
		Field[] declaredFields = forName.getDeclaredFields();//获取属性
		StringBuffer strbuf=new StringBuffer();//拼接容器
		strbuf.append("select ");
		for (int i = 0; i < declaredFields.length; i++) {
			Field field = declaredFields[i];
			  Property declaredAnnotation = field.getDeclaredAnnotation(Property.class);
			  String name = declaredAnnotation.name();//获取属性值
			strbuf.append(name);
			if(i<declaredFields.length-1) {
				strbuf.append(",");
			}
		}
		Table table = forName.getDeclaredAnnotation(Table.class);
		String name = table.name();//获取表对象
		strbuf.append(" from "+name);
		stmt= connection.prepareStatement(strbuf.toString());
		rs=stmt.executeQuery();
		if (!rs.next()) {
			throw new Exception("查询无结果!");
		}
		System.out.println(rs.toString());
	}catch (Exception e) {
		if(rs!=null) {
			rs.close();
		}
		if(stmt!=null) {
			stmt.close();
		}
		if(connection!=null) {
			connection.close();
		}
	}	

}

Шаблоны

1, синглтон

2, завод шаблон
3, прокси - режим

Шесть принципов шаблонов проектирования

1, открытие и закрытие принцип (Открыть Закрыть Принцип)
открытие и закрытие принцип , который открыт для расширения , но закрыты для модификации. Когда программа должна расширяться, чтобы не изменить существующий код для достижения эффекта горячей замены. Так кратко в одном предложении: Для того , чтобы сделать программу более масштабируемость, простота в обслуживании и модернизации. Хочу , чтобы достичь этого эффекта, мы должны использовать интерфейсы и абстрактные классы, следует детальному проектированию, мы отметим эту точку.
2, принцип замещения Рихтера (Лисков принцип замещения)
принцип замещения Рихтер (Лисков принцип замещения ЛСП) Одним из основных принципов объектно-ориентированного проектирования. Рихтер принцип замещения в этом месте может появиться какой - либо базовый класс, подкласс будет иметь возможность появляться. LSP наследуется краеугольный мультиплексируется только тогда , когда производный класс может заменить базовый класс, программное обеспечение функциональной единица не влияет, базовый класс действительно может быть использован повторно, производный класс может добавить новое поведение на основе базового класса на , Рихтер принцип замены - добавление «включено-выключено» принцип. Для достижения «открыт - закрыт» принцип является ключевым шагом в абстракции. Отношения наследования с базовым классом является подклассом реализации абстрактного бетона, так что принцип замещения Рихтер спецификации шагов для достижения конкретных абстрактного. - Из Baidu энциклопедии
3, Принцип инверсии зависимостей (зависимость Принцип инверсии) На
основе этого принципа открытия и закрытия, содержание конкретного: истинного по программированию интерфейсов, в зависимости от абстрактного не зависит от специфики.
4, принцип интерфейса сегрегации (интерфейс Сегрегация Принцип)
смысл этого принципа: использование множества изоляции интерфейса, лучше , чем при использовании одного интерфейса. Или более низкая степень связывания между классами средних, отсюда мы видим , что, на самом деле, шаблон проектирования является разработка программного обеспечения, от крупномасштабной архитектуры программного обеспечения, в целях повышения и простота в обслуживании. Таким образом, несколько раз выше: уменьшить зависимость, уменьшить соединения.
5, Закон Деметры (наименее известный принцип) (Деметра Принцип)
Почему вызов наименее известные принципы, то есть: предприятие должно минимизировать взаимодействие между объектом и другими, так что независимыми функциональными модулями.
6, синтез принципов мультиплексирования (Повторное использование композитного Принцип)
принцип заключается в том, чтобы использовать синтетические полимерные данные / вместо наследования

Опубликовано 26 оригинальных статей · вона похвала 0 · Просмотров 715

рекомендация

отblog.csdn.net/YHM_MM/article/details/102999727
рекомендация