欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java工廠模式和代理模式的區(qū)別

王梓涵1年前9瀏覽0評論

Java工廠模式和代理模式都是常用的設(shè)計(jì)模式,但它們有著不同的應(yīng)用場景和工作原理。

工廠模式是一種創(chuàng)建型設(shè)計(jì)模式,旨在為客戶端提供一種創(chuàng)建對象的方式,同時(shí)隱藏了對象的創(chuàng)建細(xì)節(jié)。通過工廠模式,客戶端可以通過簡單的接口調(diào)用得到所需對象。工廠模式主要有三種類型:簡單工廠模式、工廠方法模式和抽象工廠模式。其中,簡單工廠模式將對象的創(chuàng)建邏輯放入一個(gè)工廠類中,對客戶端提供一個(gè)工廠方法來創(chuàng)建對象。而工廠方法模式則將工廠類抽象化,每個(gè)具體工廠類負(fù)責(zé)創(chuàng)建自己特定的產(chǎn)品。抽象工廠模式則為創(chuàng)建一族產(chǎn)品提供一個(gè)工廠接口,而每個(gè)具體工廠類則負(fù)責(zé)創(chuàng)建自己的一族產(chǎn)品。

// 簡單工廠模式示例代碼
public class ShapeFactory {
	public static Shape getShape(String type) {
if(type.equalsIgnoreCase("circle")) {
return new Circle();
} else if (type.equalsIgnoreCase("rectangle")) {
return new Rectangle();
} else if (type.equalsIgnoreCase("square")) {
return new Square();
}
return null;
	}
}

代理模式則是一種結(jié)構(gòu)型設(shè)計(jì)模式,旨在為對象提供一個(gè)代理或占位符,以便于控制對對象的訪問。代理模式的核心在于代理類與目標(biāo)類實(shí)現(xiàn)相同的接口,對外提供相同的方法,并在調(diào)用目標(biāo)類方法前后進(jìn)行一些特定的處理。可以根據(jù)代理的不同形式分為靜態(tài)代理和動(dòng)態(tài)代理。

// 靜態(tài)代理模式示例代碼
public interface Image {
	void display();
}
public class RealImage implements Image {
	private String fileName;
	public RealImage(String fileName) {
this.fileName = fileName;
loadFromDisk(fileName);
	}
	@Override
	public void display() {
System.out.println("Displaying " + fileName);
	}
	private void loadFromDisk(String fileName) {
System.out.println("Loading " + fileName);
	}
}
public class ProxyImage implements Image {
	private RealImage realImage;
	private String fileName;
	public ProxyImage(String fileName) {
this.fileName = fileName;
	}
	@Override
	public void display() {
if(realImage == null) {
realImage = new RealImage(fileName);
}
realImage.display();
	}
}

工廠模式和代理模式雖然都屬于設(shè)計(jì)模式,但它們的作用和實(shí)現(xiàn)方式有明顯的不同。工廠模式旨在隱藏對象的創(chuàng)建細(xì)節(jié),為客戶端提供一種簡單的接口來創(chuàng)建對象。而代理模式則旨在控制對對象的訪問,為對象提供一個(gè)代理或者占位符來訪問。