10.6.1 再访工厂方法
来源:互联网 发布:密室逃脱成本计算软件 编辑:程序博客网 时间:2024/06/14 05:46
通常的抽象工厂方法包含产品, 抽象产品, 工厂, 抽象工厂四个概念:
package com.cnsuning.animals;public class Animal {public Animal() {// TODO Auto-generated constructor stub}public static void main(String[] args) {// TODO Auto-generated method stub}public void run(){System.out.println("Animal run");}}package com.cnsuning.animals;import com.cnsuning.inter.Flyable;public class Bird extends Animal implements Flyable {public Bird() {}@Overridepublic void fly() {System.out.println("Bird can fly");}public static void main(String[] args) {Bird b = new Bird();b.fly();}@Overridepublic void run() {// TODO Auto-generated method stubSystem.out.println("Bird run");}}package com.cnsuning.animals;import com.cnsuning.inter.CanFlyAndRun;public class Duck extends Animal implements CanFlyAndRun{public Duck() {}public static void main(String[] args) {Duck d = new Duck();d.fly();d.run();}@Overridepublic void fly() {System.out.println("Duck can fly");}@Overridepublic void run() {System.out.println("Duck run");}}package com.cnsuning.inter;import com.cnsuning.animals.Animal;public interface AnimalFactory {Animal getAnimal();}package com.cnsuning.factory;import com.cnsuning.animals.Animal;import com.cnsuning.animals.Bird;import com.cnsuning.inter.AnimalFactory;public class BirdFactory implements AnimalFactory {public BirdFactory() {}public static void main(String[] args) {}@Overridepublic Animal getAnimal() {return new Bird();}}package com.cnsuning.factory;import com.cnsuning.animals.Animal;import com.cnsuning.animals.Duck;import com.cnsuning.inter.AnimalFactory;public class DuckFactory implements AnimalFactory{public DuckFactory() {}public static void main(String[] args) {}@Overridepublic Animal getAnimal() {// TODO Auto-generated method stubreturn new Duck();}}package com.cnsuning.src;import com.cnsuning.animals.Animal;import com.cnsuning.factory.BirdFactory;import com.cnsuning.factory.DuckFactory;import com.cnsuning.inter.AnimalFactory;import com.cnsuning.inter.AnimalType;import com.cnsuning.util.Circle;public class Main {public Main() {// TODO Auto-generated constructor stub}public static void main(String[] args) {DuckFactory df = new DuckFactory();BirdFactory bf = new BirdFactory();animalRun(df);animalRun(bf);}public static void animalRun(AnimalFactory af){Animal a = af.getAnimal();a.run();}}
Duck runBird run
此外, 可以利用内部类将工厂直接集成到产品中, 进行部分简化:
package com.cnsuning.animals;import com.cnsuning.inter.AnimalFactory;import com.cnsuning.inter.Flyable;public class Bird extends Animal implements Flyable {public static AnimalFactory factory = new AnimalFactory(){@Overridepublic Animal getAnimal() {// TODO Auto-generated method stubreturn new Bird();}};public Bird() {}@Overridepublic void fly() {System.out.println("Bird can fly");}public static void main(String[] args) {Bird b = new Bird();b.fly();}@Overridepublic void run() {// TODO Auto-generated method stubSystem.out.println("Bird run");}}package com.cnsuning.animals;import com.cnsuning.inter.AnimalFactory;import com.cnsuning.inter.CanFlyAndRun;public class Duck extends Animal implements CanFlyAndRun{public static AnimalFactory factory = new AnimalFactory(){@Overridepublic Animal getAnimal() {// TODO Auto-generated method stubreturn new Duck();}};public Duck() {}public static void main(String[] args) {Duck d = new Duck();d.fly();d.run();}@Overridepublic void fly() {System.out.println("Duck can fly");}@Overridepublic void run() {System.out.println("Duck run");}}package com.cnsuning.src;import com.cnsuning.animals.Animal;import com.cnsuning.animals.Bird;import com.cnsuning.animals.Duck;import com.cnsuning.factory.BirdFactory;import com.cnsuning.factory.DuckFactory;import com.cnsuning.inter.AnimalFactory;import com.cnsuning.inter.AnimalType;import com.cnsuning.util.Circle;public class Main {public Main() {// TODO Auto-generated constructor stub}public static void main(String[] args) {animalRun(Bird.factory);animalRun(Duck.factory);}public static void animalRun(AnimalFactory af){Animal a = af.getAnimal();a.run();}}Bird runDuck run
0 0
- 10.6.1 再访工厂方法
- 工厂方法模式1
- 1工厂方法
- 【GoF】工厂方法-再理解
- java工厂方法模式1
- 设计模式(1) - 工厂方法
- 设计模式-1-工厂方法
- 工厂与工厂方法
- 工厂模式 -- 工厂方法
- 工厂模式-工厂方法
- 抽象工厂 工厂方法
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 简单工厂,工厂方法
- 工厂方法
- 工厂方法
- 工厂方法
- 工厂方法
- [Cocos2d-x v3.x官方文档]cocos2d::Value
- 通过函数调用,获取字符串的方法
- 回调函数
- [ICME 2014, paperId 293]AN APPROACH FOR FAST AND PARALLEL VIDEO PROCESSING ON APACHE HADOOP CLUSTERS
- 海贼女帝(程序员手绘)
- 10.6.1 再访工厂方法
- Nginx负载均衡的研究
- 使用Jquery easyui
- IIS MVC 发布错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容
- C#.NET自定义报表数据打印
- Java中的回调函数学习-深入浅出
- [Cocos2d-x v3.x官方文档]cocos2d::Vector
- 20140715 「博弈 - 巴什博弈」 HDOJ 2149 Public Sale
- swt CheckboxTreeViewer 全选 反选 级联选中子节点