`
行者买刀
  • 浏览: 191288 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

设计模式之略见一斑(工厂模式Factory)

    博客分类:
  • J2SE
阅读更多

    在开发中其实我们已经不知道用到了设计模式中的很多模式 ,只是有些我们还未知它具体是哪种模式来着。如工厂模式,单例,适配,外观模式等一些常见模式。

下面是自己学习的一些相关笔记,以做备忘录.

 

1.工厂模式

 分为三类:

 1)简单工厂模式(simple factory)

   也叫静态工厂模式,一般是具体产品的继承类或者是接口的实现,如下拿一个司机开多种车的例子。

   

public interface Car{
		void drive();
	}
	private class QQCar implements Car{

		public void drive() {
			System.out.println("QQCar");
		}
		
	}
	public class BaoMaCar implements Car{

		public void drive() {
			System.out.println("BaoMaCar");
		}
		
	}
	public class BenChiCar implements Car{

		public void drive() {
			System.out.println("BenChiCar");
		}
		
	}
	public static Car getCar(String carname){
		if(carname.equalsIgnoreCase("QQCar")){
			return new QQCar();
		}else if(carname.equalsIgnoreCase("BaoMaCar")){
			return new BaoMaCar();
		}else if(carname.equalsIgnoreCase("BenChiCar")){
			return new BenChiCar();
		}
		return null;
	}
	public static void main(String[] args) {
		Car car = FactoryStatic.getCar("QQCAR");
		car.drive();
	}

 

    

 2)工厂方法模式(factory method)

    如上,如果是一部车对应一个司机的话,可先要叫得这个司机,然后再去取车子

   

	public class BenChiCar implements Car{

		public void drive() {
			System.out.println("BenChiCar");
		}
		
	}
	public interface Driver{
		Car driveCar();
	}
	public class QQDriver implements Driver{
		public Car driveCar() {
			return new QQCar();
		}
	}
	public class BaoMaDriver implements Driver{
		public Car driveCar() {
			return new BaoMaCar();
		}
	}
	public class BenChiDriver implements Driver{
		public Car driveCar() {
			return new BenChiCar();
		}
	}

	public static void main(String[] args) {
		 Driver dirver = new QQDriver();
		 Car car = dirver.driveCar();
		 car.drive();
	}

 

 3)抽象工厂模式(abstract factory)

  抽象工厂模式比工厂方法模式的条件更多,如多个司机拥有种式种类的车,如跑车(宝马,奥迪),商务车(丰田,本田),越野车(路虎)等,如此就需要在车的基础上新加一个车的接口

	private interface CarType{
		public Car getSportCar(String carname);
		public Car getBuiCar(String carname);
		public Car getFastCar(String carname);
	}

 

如此基础上对新式的各种各样的车进行区别,从而当新增一款车型时或者新增一类车型时就对应加入相应的类和方法

分享到:
评论
2 楼 v韧竹v 2012-11-22  
最后那个抽象工厂模式,CarType是不是定义错了,应该abstract class CarType吧
1 楼 bo_hai 2011-02-16  
abstract factory  没有讲明白。

相关推荐

    设计模式之略见一斑(Observer观察者模式)

    NULL 博文链接:https://lgh3292.iteye.com/blog/600905

    21种设计模式略见一斑

    NULL 博文链接:https://teddywang.iteye.com/blog/769122

    循环冗余校验-概念 算法 应用

    CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,...例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。

    CRC16或32校验

    CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,编码...例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑

    CRC算法和实现

    例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。 差错控制理论是在代数理论基础上建立起来的。这里我们着眼于介绍CRC的算法与实现,对原理只能...

Global site tag (gtag.js) - Google Analytics