软件设计模式—— 工厂模式

今天也是代码花~不想唠嗑了

工厂模式

定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
A接口,用于创建对象,用具体的类实现A接口(A.1,A.2……)。声明工厂方法,返回A类型对象。重定义工厂方法,返回A实例(A.1,A.2……)。
优点:
1、调用者创建一个对象,只要知道名称。
2、扩展性高,增加一个产品,只要扩展一个工厂类。
3、屏蔽产品的具体实现,只关心产品的接口。

缺点:
每次增加一个产品,都需要增加一个具体类和对象实现工厂,同时也增加了系统具体类的依赖。

题目

有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。

UML图

在这里插入图片描述

我真的知道这个图画的丑……先用starUML又用visio最后搞得身心俱疲。心疼我花.jpg
但我还是很爱你们滴,看我找到了一个好东西,迫不及待要分享给泥萌。可以在线画图的好王子~

简单代码

laptop.java下(这是一个接口)

public interface Laptop {
	public void produce();
}

HP.java下(实现接口,类似还有Lenovo.java;Dell.java;Acer.java)

public class HP implements Laptop {
	public void produce() {
		System.out.println("生产HP laptop");
	}
}

LaptopFactory.java下(接口)

public interface LaptopFactory {
 public Laptop CreatLaptop();
}

HPFactory.java下(类似还有LenovoFactory.java;DellFactory.java;AcerFactory.java)

public class HPFactory implements LaptopFactory {
	public Laptop CreatLaptop() {
		return new HP();
	}
}

FactoryPatternDemo.java下

public class FactoryPatternDemo {
 	public static void main(String[] args) {
  		LaptopFactory laptopfactory1 = new HPFactory();
  		Laptop laptop1 = laptopfactory1.CreatLaptop();
 		laptop1.produce();
 	}
}

感觉工厂模式还挺简单,当然这个还得有对比。下一个就是抽象工厂模式,对比墙裂。啾咪~

猜你喜欢

转载自blog.csdn.net/Yvette_Lucifer/article/details/84144884