工厂模式(JAVA设计模式)

1.简单工厂模式:我创建一个“上帝类”创造出所有的类。

2.工厂方法模式:将工厂类进行抽象,创建不是类型的工厂类。

3.抽象工厂模式:创建一个抽象的工厂父类,适合一系列产品的创建。


1.简单工厂模式

public interface Car {
	public void run();
}

public class Bmw implements Car {

	public void run() {
		System.out.println("Bmw run()...");
	}

}
public class Benz implements Car{

	public void run() {
		System.out.println("Benz run()...");
	}

}
/**
 * 简单工厂HelloWorld
 */
public class SimpleFactory {
	public static Car createCar(String type) {
		if ("bmw".equals(type)) {
			return new Bmw();
		} else {
			return new Benz();
		}
	}

	public static void main(String[] args) {
		Car c = SimpleFactory.createCar("bmw");
		c.run();
	}
}


2.工厂方法模式

public interface Factory {
	public Car create();
}
public class BmwFactory implements Factory{

	public Car create() {
		return new Bmw();
	}

}
public class BenzFactory implements Factory {

	public Car create() {
		return new Benz();
	}

}
public interface Car {
	public void run();
}
public class Bmw implements Car{
	public void run() {
		System.out.println("Bmw run()...");
	}
}
public class Benz implements Car {
	public void run() {
		System.out.println("Benz run()...");
	}
}
public class Test {
	public static void main(String[] args) {
		Factory factory = new BenzFactory();//可以生产各种各样的奔驰。
		Car c = factory.create();
		c.run();
	}
}

3.抽象工厂模式
public abstract class AbstractFactory {
	abstract Button createButton();
	abstract Panel createPanel();
}
public class BlueSkinFactory extends AbstractFactory {
	@Override
	Button createButton() {
		return new BlueButton();
	}

	@Override
	Panel createPanel() {
		return new BluePanel();
	}
}
public class RedSkinFactory extends AbstractFactory{
	@Override
	Button createButton() {
		return new RedButton();
	}

	@Override
	Panel createPanel() {
		return new RedPanel();
	}
}
public interface Button {
	public void createButton();
}
public interface Panel {
	public void createPanel();
}
public class BlueButton implements Button{

	public void createButton() {
		System.out.println("create blue button");
	}
	
}
public class BluePanel implements Panel{

	public void createPanel() {
		System.out.println("create Blue Panel");
	}

}
public class RedButton implements Button{

	public void createButton() {
		System.out.println("create Red Button");
	}

}
public class RedPanel implements Panel{

	public void createPanel() {
		System.out.println("create Red Panel");
	}

}
public class Test {
	public static void main(String[] args) {
		AbstractFactory f = new RedSkinFactory();//只需要修改这句就可以实现换皮肤功能。如果写在配置文件中就更方便了。
		Button b = f.createButton();
		b.createButton();
		Panel p = f.createPanel();
		p.createPanel();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值