`

java工厂设计模式

 
阅读更多
public interface Car {
	public void start();
    public void stop();
}
public class Car_Class implements Car {
	private String carname;
	int speed;
	public String getName(){
	  return carname;
	}
	public void setName(String carname){
	  this.carname = carname;
	}
	public int getSpeed() {
		  return speed;
	}
	public void setSpeed(int speed) {
		  this.speed = speed;
	}
	public void start() {
	}

	public void stop() {
	}
}
public class CAR_CALSS_AUDI extends Car_Class {
	public void start(){
		  System.out.println(this.getName()+"启动了,速度为"+this.getSpeed());
	}
	public void stop(){
		  System.out.println(this.getName()+"停止了");
	}
}
public class CAR_CALSS_3W extends Car_Class {
	public void start(){
		  System.out.println("我是奥迪;"+this.getName()+"启动了,速度为"+this.getSpeed());
	}
	 public void stop(){
	  System.out.println("我是奥迪;"+this.getName()+"停止了");
	 }
}
public class CAR_FACTORY_AUDI implements CAR_FACTORY {
	
	 public Car create_car() {
		  CAR_CALSS_3W car_3w_imp  = new CAR_CALSS_3W();
		  car_3w_imp.setName("上海大众passt");
		  car_3w_imp.setSpeed(200);
		  return car_3w_imp;
		 
	 }
}
public class CAR_FACTORY_Auto implements CAR_FACTORY {
	
	public Car create_car() {
	  CAR_CALSS_AUDI car_audi_imp  = new CAR_CALSS_AUDI();
	  car_audi_imp.setName("奥迪A6");
	  car_audi_imp.setSpeed(200);
	  return car_audi_imp;
	 }
}
public static void main(String[] args) {
	      CAR_FACTORY_AUDI factory_audi = new CAR_FACTORY_AUDI();
	      Car  car_ref  = factory_audi.create_car();
	      car_ref.start();
	      car_ref.stop();

	}

 

package cn.java.adpater;
interface Car {
	void run();
	void stop();
}
class Benz implements Car {

	public void run() {
		System.out.println("奔驰开车了");
	}
	public void stop() {
		System.out.println("奔驰停车了");
	}
}
class Ford implements Car {

	public void run() {
		System.out.println("福特开车了");
	}
	public void stop() {
		System.out.println("福特停车了");
	}
}
//加上次接口,就成了工厂方法模式,否则:简单工厂模式
//抽象工厂模式,就是把工厂给抽象(接口)出来,然后在实现这个接口,窗户端调用时,要通过new来创建工厂,然后在调用工厂里的方法
interface AbstractFactory{}
class FactoryCar implements AbstractFactory{
	public static Car newCar(String type) {
		Car c = null;
		try {
			c = (Car) Class.forName("cn.java.adpater." + type).newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return c;
	}
}
//有对象模型Car,创建对象Benz,通过工厂帮我们new出来
public class FactoryDemo {
	public static void main(String[] args) {
		Car car = FactoryCar.newCar("Benz");
		if (car != null) {
			car.run();
			car.stop();
		}else{
			System.out.println("造不了这种汽车.....");
		}
	}
}

 

 

package org.jzkangta.factorydemo03;

interface Person{
	public void eat();
	public void talk();
}
//男人
class Man implements Person{
	public void eat(){
		System.out.println("男人再吃东西。。。。");
	}
	public void talk(){
		System.out.println("男人在说话。。。。");
	}
}
//女人
class Woman implements Person{
	public void eat(){
		System.out.println("女人再吃东西。。。。");
	}
	public void talk(){
		System.out.println("女人在说话。。。。");
	}
}

interface Animal{
	public void eat();
	public void sleep();
}
//公牛
class Bull implements Animal{
	public void eat(){
		System.out.println("Bull再吃东西。。。。。");
	}
	public void sleep(){
		System.out.println("Bull睡觉了。。。。");
	}
}
//母牛
class Cow implements Animal{
	public void eat(){
		System.out.println("Cow再吃东西。。。。。");
	}
	public void sleep(){
		System.out.println("Cow睡觉了。。。。");
	}
}
//NWFactory-->女娲
interface NWFactory{
	public Person getPerson(String type);
	public Animal getAnimal(String type);
}
//阳绳-->用来造男人和雄性动物(Bull)
class YangSheng implements NWFactory{
	Man m=null;
	Bull b=null;
	public Man getPerson(String type){
		try {
			m=(Man)Class.forName("org.jzkangta.factorydemo03."+type).newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return m;
	}
	public Bull getAnimal(String type){
		try {
			b=(Bull)Class.forName("org.jzkangta.factorydemo03."+type).newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return b;
	}
}
//阴绳-->用来造女人和雌性动物(Cow)
class YinSheng implements NWFactory{
	Woman w=null;
	Cow c=null;
	public Woman getPerson(String type){
		try {
			w=(Woman)Class.forName("org.jzkangta.factorydemo03."+type).newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return w;
	}
	public Cow getAnimal(String type){
		try {
			c=(Cow)Class.forName("org.jzkangta.factorydemo03."+type).newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return c;
	}
}

public class FactoryDemo03 {

	public static void main(String[] args) {
		//实例化一个阳绳,ys
		YangSheng ys=new YangSheng();
		//实例化一个阴绳,ys1
		YinSheng ys1=new YinSheng();
		//造男人和女人,p1是男人,p2是女人
		Person p1=ys.getPerson("Man");
		Person p2=ys1.getPerson("Woman");
		//造动物,a1是公牛(Bull),a2是母牛(Cow)
		Animal a1=ys.getAnimal("Bull");
		Animal a2=ys1.getAnimal("Cow");
		a1.eat();
		a1.sleep();
		a2.eat();
		a2.sleep();
		p1.eat();
		p1.talk();
		p2.eat();
		p2.talk();

	}

}

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics