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();
}
}
分享到:
相关推荐
例题简单的阐述了Java工厂模式的概念,有利于读者更好地了解Java工厂模式
java工厂设计模式
java工厂设计模式之简单工厂实例以及介绍,程序已经运行过能正常跑通
java工厂设计模式讲解+例子,三种工厂模式的讲解,简单工厂、工厂方法、抽象工厂
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
Fruit类:接口,实现方法 Apple类:实现Fruit接口 Grape类:实现Fruit接口 Strawberry类:实现Fruit接口 FruitGardener类: BadFruitException类:要种植的水果不在公司经营的水果范围之内,抛出种植异常 ...
设计模式之简单工厂模式,有文档解说,有代码案例。很适合初学者学习!
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式、工厂方法、抽象工厂、Java工厂模式举例等内容,需要的朋友可以参考下
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂
JAVA 设计模式: 工厂模式 代理模式 迭代模式 责任链模式 源码
工厂模式: – 实现了创建者和调用者的分离。 – 详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 面向对象设计的基本原则: OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改...
内容: 本章利用了IO流、JAVA反射机制、Properties类,综合讲解了JAVA工厂设计模式的主要应用 产品:JDK 1.5 技术:JAVA基础 难度: ★★★★★
主要介绍了Java设计模式之工厂模式实现方法,结合实例形式较为详细的分析了工厂模式的分类、原理、实现方法与相关注意事项,需要的朋友可以参考下
主要介绍了Java设计模式——工厂设计模式详解,具有一定参考价值,需要的朋友可以了解下。
java 抽象工厂设计模式 的 案例 源码,值得一看,看完你就懂了,嘿嘿
Java设计模式中的工厂模式,MainDemo.java 是项目演示入口
设计模式之工厂模式Java实现和类设计图,包括简单工厂模式、工厂方法模式和抽象工厂模式