创新型设计模式+编程

创新型设计模式

创建型

  1. 抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
  2. Biluder生成器:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。

结构型

  1. 适配器:将一个类的接口转换成客户希望的另一个接口。
  2. bridge桥接:将抽象部分与实现部分分离,使他们可以独立的变化,客户并不知道。
  3. Composite组合:将对象组合成树型表示部分和整体的层次结构,使得单个对象和组合对象具有一致性。
  4. Decorator装饰:动态的给一个对象添加一些额外的职责

行为型

  1. 责任链:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
  2. Command命令:将一个请求封装为一个对象,从而使得不同的请求对客户进行参数化。对请求排队或记录请求日志,以及支持可撤销的操作。
  3. 迭代器:提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示。
  4. 中介者:用一个中介对象来封装一系列的对象交互,中介者不需要显示的相互调用,从而使其耦合松散,而且可以独立的改变他们之间的交互。

编程题

package leetcode;

import java.util.Arrays;
import java.util.Scanner;

public class juzhenzhuanzhi {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		 * 给定一个矩阵 A, 返回 A 的转置矩阵。
		 * 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。*/
		Scanner sc=new Scanner(System.in);
		System.out.print("Enter row and col:");
		int rowlen=sc.nextInt();
		int collen=sc.nextInt();
		int A[][]=new int[rowlen][collen];
		//System.out.print("[");
		for(int i=0;i<rowlen;i++){
			for(int j=0;j<collen;j++){
				A[i][j]=sc.nextInt();
			}
		}
		A=transpose(A) ;
		//System.out.print("[");
		for(int i=0;i<A.length;i++){
			for(int j=0;j<A[i].length;j++){
				if(j==A[j].length-1){
				System.out.print(A[i][j]+"]"+",");
				}else if(j==0){
					System.out.print("["+A[i][j]+",");
//				}else if(j==A[j].length-1&&i==A.length-1){
//					System.out.print(A[i][j]+"]]");
	}else{
				System.out.print(A[i][j]+",");
				}
			}
		}
		
		}
	public static int[][] transpose(int A[][]){
		int m=A.length;
		int n=A[0].length;
		int  B[][]=new int[n][m];
		for(int i=0;i<m;i++){	
		for(int j=0;j<n;j++){
			 B[j][i]=A[i][j];
		}
		
	}
	return B;
}
}


猜你喜欢

转载自blog.csdn.net/qq_43157982/article/details/83546023