实战设计模式之抽象工厂
来源:互联网 发布:怎么程序员简历包装 编辑:程序博客网 时间:2024/06/05 14:40
只做代码分析,不做语义解析(高级程序员都从代码理解设计思想和UML理解设计思想)。代码来自尚学堂,UML来自本人手绘:
AbstractFactory.java
public abstract class AbstractFactory {public abstract Vehicle createVehicle();public abstract Weapon createWeapon();public abstract Food createFood();}
DefaultFactory.java
public class DefaultFactory extends AbstractFactory{@Overridepublic Food createFood() {// TODO Auto-generated method stubreturn new Apple();}@Overridepublic Vehicle createVehicle() {// TODO Auto-generated method stubreturn new Car();}@Overridepublic Weapon createWeapon() {// TODO Auto-generated method stubreturn new AK47();}}MagicFactory.java
public class MagicFactory extends AbstractFactory {@Overridepublic Food createFood() {// TODO Auto-generated method stubreturn new MushRoom();}@Overridepublic Vehicle createVehicle() {// TODO Auto-generated method stubreturn new Broom();}@Overridepublic Weapon createWeapon() {// TODO Auto-generated method stubreturn new MagicStick();}}Food.java
public abstract class Food {public abstract void printName();}
Vehicle.java
public abstract class Vehicle {public abstract void run();}
Weapon.java
public abstract class Weapon {public abstract void shoot();}
Apple.java
public class Apple extends Food {public void printName() {System.out.println("apple");}}
AK47.java
public class AK47 extends Weapon{public void shoot() {System.out.println("哒哒哒...");}}
Car.java
public class Car extends Vehicle {public void run() {System.out.println("冒着烟奔跑中car.......");}}
Broom.java
public class Broom extends Vehicle{public void run() {System.out.println("一路沙尘暴飞奔而来broom.....");}}MagicStick.java
public class MagicStick extends Weapon {@Overridepublic void shoot() {System.out.println("fire hu hu hu ...");}}
MushRoom.java
public class MushRoom extends Food {@Overridepublic void printName() {// TODO Auto-generated method stubSystem.out.println("mushroom");}}Test.java
public class Test {public static void main(String[] args) {AbstractFactory f = new DefaultFactory();Vehicle v = f.createVehicle();v.run();Weapon w = f.createWeapon();w.shoot();Food a = f.createFood();a.printName();}}
UML图如下:
更多内容请查看我的其他blog:http://blog.csdn.net/caicongyang
- 实战设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式 之 抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之-抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式 之 抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- iis打不开网站的解决办法
- 基于四叉树(QuadTree)的LOD地形实现
- HTML5敏捷实践
- Linux 命令行快捷键
- Cheng's Regression Challenge
- 实战设计模式之抽象工厂
- 或许对你创业有所启示:10个英国快速增长的科技创业公司
- Android实现伸缩弹力分布菜单效果
- NOI2004 郁闷的出纳员
- Insertion Sort List 链表插入排序@LeetCode
- [MSSQL]SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
- eclipse 怎么取消文件中的特殊字符
- cocos2d-x屏幕适配
- (Android实战)创建查看试卷答案功能(类似于疯狂小鸟的选关)