Java语言 封装创建 简单工厂方法(Simple Factory method)
来源:互联网 发布:mac闪讯怎么用 编辑:程序博客网 时间:2024/06/01 08:06
我们用下面的例子,重温一下 Shape 系统。
(实现 factory 模式)常用的方法是把 factory 声明为基类的静态方法(staticmethod)。
ShapeFactory.java
package com.enfo.wd.factory;import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List;abstract class Shape{ public abstract void draw(); public abstract void erase(); public static Shape factory(String type){ if(type.equals("Circle")) return new Circle(); if(type.equals("Square")) return new Square(); throw new RuntimeException("Bad shape creation:"+type); }} class Circle extends Shape{ @Override public void draw() { System.out.println("Circle.draw"); } @Override public void erase() { System.out.println("Circle.erase"); }}class Square extends Shape{ @Override public void draw() { System.out.println("Square.draw"); } @Override public void erase() { System.out.println("Square.erase"); }}public class ShapeFactory { String shlist[]={"Circle","Square","Square","Circle","Circle","Square"}; @SuppressWarnings("rawtypes") List shapes=new ArrayList(); @SuppressWarnings({ "unchecked", "rawtypes" }) public void test(){ Iterator it=Arrays.asList(shlist).iterator(); while (it.hasNext()) shapes.add(Shape.factory(it.next().toString())); it=shapes.iterator(); while(it.hasNext()){ Shape s=(Shape) it.next(); s.draw(); s.erase(); } } public static void main(String[] args) { ShapeFactory shape=new ShapeFactory(); shape.test(); }}
factory() 方法需要传入一个参数来决定要创建的 Shape 的具体类型; 在上面的例子里(参数)碰巧是一个字符串(String),它也可以是其它任意类型。当加入新的 Shape 类型的时候(我们假定被创建对象的初始化代码是来自系统以外的,而不是像上面那个例子使用一个硬编码(hard-coded)的数组),系统唯一需要改动的代码就是 factory( )方法。为了促使创建对象的代码只包含在 factory( )方法里,特定类型的 Shape 类的构造函数都被声明为 package 权限,这样一来只有 factory( )方法可以调用这些构造函数,而位于包(package)以外的那部分代码则没有足够的权限(调用这些构造函数)。
阅读全文
0 0
- Java语言 封装创建 简单工厂方法(Simple Factory method)
- 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method)
- 简单工厂模式(Simple Factory)和工厂方法模式(Factory Method)和AbstractFactory ( 抽象工厂 )
- java工厂方法模式(Factory Method)-创建型
- Factory Method 工厂方法(创建型)
- 简单工厂模式(Simple Factory) vs 工厂方法模式(Factory Method)
- 简单工厂模式 (Simple Factory Pattern) / 静态工厂方法(Static Factory Method)模式
- 一、简单工厂模式(simple factory method)
- 简单工厂模式(Simple Factory Method Pattern)
- 工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)-----基于JAVA语言
- [从零开始学设计模式-java]简单工厂模式(Simple Factory Method)
- 简单工厂模式(Simple Factory Pattern(静态工厂方法模式)对象创建型模式)
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- Java工厂方法---Factory Method
- Java工厂方法---Factory Method
- 三个工厂模式(Simple Factory & Factory Method & Abstract Factory)
- 最简单的方式获取当前是星期几
- spring boot 集成redis
- ubuntu上lib-ace库安装编译
- Jquery显示和隐藏
- sql语句中为in动态添加参数
- Java语言 封装创建 简单工厂方法(Simple Factory method)
- Java自学能学会吗?Java新手学习路线
- 尾递归的学习
- C++避免程序运行完后窗口一闪而过的方法
- Shell脚本统计文件行数的8种方法
- Shiro与ssm登录权限验证案例演示
- idea快捷键
- 20个高级Java面试题汇总
- bootstrap表格样式