简单工厂,工厂模式和抽象工厂模式
来源:互联网 发布:java 高级编程 书籍 编辑:程序博客网 时间:2024/05/20 19:45
1、简单工厂:一般使用静态工厂,常见的特征是,简单工厂中多个if、else判断语句。其类图如下:
示例代码如下:
package com.peacentury.simpleFactory;public interface ESet {public void startUp();public void shutDown();}
package com.peacentury.simpleFactory;public class TV implements ESet{@Overridepublic void startUp() {System.out.println("TV start up");}@Overridepublic void shutDown() {System.out.println("TV shut down");}}
package com.peacentury.simpleFactory;public class AirConditioner implements ESet{@Overridepublic void startUp() {System.out.println("AirConditioner start up");}@Overridepublic void shutDown() {System.out.println("AirConditioner shut down");}}
package com.peacentury.simpleFactory;class SimpleFactory { //静态工厂方法 public static ESet getProduct(String arg) { ESet product = null; if (arg.equalsIgnoreCase("TV")) { product = new TV(); } else if (arg.equalsIgnoreCase("AirConditioner")) { product = new AirConditioner(); } return product; } }
package com.peacentury.simpleFactory;public class Client {public static void main(String args[]) { ESet product; product = SimpleFactory.getProduct("TV"); //通过工厂类创建产品对象 product.startUp(); product.shutDown(); } }
示例代码如下:
package com.peacentury.factory;public interface ESet {public void startUp();public void shutDown();}
package com.peacentury.factory;public class TV implements ESet{@Overridepublic void startUp() {System.out.println("TV start up");}@Overridepublic void shutDown() {System.out.println("TV shut down");}}
package com.peacentury.factory;public class AirConditioner implements ESet{@Overridepublic void startUp() {System.out.println("AirConditioner start up");}@Overridepublic void shutDown() {System.out.println("AirConditioner shut down");}}
package com.peacentury.factory;public interface Factory {public ESet getProduct();}
package com.peacentury.factory;public class TVFactory implements Factory {@Overridepublic ESet getProduct() {return new TV();}}
package com.peacentury.factory;public class AirConditionerFactory implements Factory{@Overridepublic ESet getProduct() {return new AirConditioner();}}
package com.peacentury.factory;public class Client {public static void main(String args[]) {Factory factory;ESet product;factory = new TVFactory();//可以通过配置文件确定product = factory.getProduct();product.startUp();product.shutDown();}}
3、抽象工厂模式:与工厂模式相比,抽象工厂多了产品族的概念。比如,海尔空调,海尔电视,海尔冰箱就属于同一产品族。抽象工厂是在单个产品工厂的基础上加强,抽象工厂能生产同一产品族的所有产品。其类图如下:
示例代码如下:
package com.peacentury.abstractFactory;public interface AirConditioner {public void startUp();public void shutDown();}
package com.peacentury.abstractFactory;public interface Fridge {public void startUp();public void shutDown();}
package com.peacentury.abstractFactory;public interface TV {public void startUp();public void shutDown();}
package com.peacentury.abstractFactory;public class HaierAirConditioner implements AirConditioner {@Overridepublic void startUp() {System.out.println("HaierAirConditoner start up");}@Overridepublic void shutDown() {System.out.println("HaierAirConditioner shut down");}}
package com.peacentury.abstractFactory;public class MideaAirConditioner implements AirConditioner {@Overridepublic void startUp() {System.out.println("MideaAirConditioner start up");}@Overridepublic void shutDown() {System.out.println("MideaAirConditioner shut down");}}
package com.peacentury.abstractFactory;public class HaierFridge implements Fridge {@Overridepublic void startUp() {System.out.println("HaierFridge start up");}@Overridepublic void shutDown() {System.out.println("HaierFridge shut down");}}
package com.peacentury.abstractFactory;public class MideaFridge implements Fridge {@Overridepublic void startUp() {System.out.println("MideaFridge start up");}@Overridepublic void shutDown() {System.out.println("MideaFridge shut down");}}
package com.peacentury.abstractFactory;public class HaierTV implements TV {@Overridepublic void startUp() {System.out.println("HaierTV start up");}@Overridepublic void shutDown() {System.out.println("HaierTV shut down");}}
package com.peacentury.abstractFactory;public class MideaTV implements TV {@Overridepublic void startUp() {System.out.println("MideaTV start up");}@Overridepublic void shutDown() {System.out.println("MideaTV shut down");}}
package com.peacentury.abstractFactory;public interface Factory {public AirConditioner getAirConditioner();public Fridge getFridge();public TV getTV();}
package com.peacentury.abstractFactory;public class HaierFactory implements Factory {@Overridepublic AirConditioner getAirConditioner() {return new HaierAirConditioner();}@Overridepublic Fridge getFridge() {return new HaierFridge();}@Overridepublic TV getTV() {return new HaierTV() ;}}
package com.peacentury.abstractFactory;public class MideaFactory implements Factory {@Overridepublic AirConditioner getAirConditioner() {return new MideaAirConditioner();}@Overridepublic Fridge getFridge() {return new MideaFridge();}@Overridepublic TV getTV() {return new MideaTV() ;}}
package com.peacentury.abstractFactory;public class Client {public static void main(String args[]) {Factory factory;AirConditioner ac;Fridge fridge;TV tv;factory = new HaierFactory();//可以通过配置文件确定ac = factory.getAirConditioner();fridge = factory.getFridge();tv=factory.getTV();ac.startUp();fridge.startUp();tv.startUp();ac.shutDown();fridge.shutDown();tv.shutDown();}}
0 0
- 简单工厂、工厂模式和抽象工厂
- 工厂模式(简单工厂、工厂和抽象工厂) C++
- 简单工厂模式、工厂方法模式和抽象工厂模式
- 简单工厂模式、工厂方法模式和抽象工厂模式
- 简单工厂模式、工厂模式和抽象工厂模式例子
- 简单工厂模式,工厂方法模式和抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂,工厂模式和抽象工厂模式
- 简单工厂,工厂模式和抽象工厂,以及策略模式
- 简单工厂、工厂方法模式和抽象工厂模式区别?
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- iOS项目开发实战——实现视图切换动画
- Codeforces 455B
- poj 3259 bellman最短路判断有无负权回路
- 排序算法和查询算法的介绍
- hdoj 1905 Pseudoprime numbers
- 简单工厂,工厂模式和抽象工厂模式
- C++中虚函数和非虚函数重载在继承时的区别
- dialog相关
- oracle 异常关闭造成 -重启服务仍无法正常连接 -windows处理
- SVN提交.a文件
- Spring 入门教程(三) 注入和自动装配
- UVALive 6124 Hexagon Perplexagon
- 怀念张筑生
- Java进行3DES加密解密