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(); } }