一、简单工厂
来源:互联网 发布:红米note2网络 编辑:程序博客网 时间:2024/04/27 04:23
工厂适用于生产,生产出不同的对象,这些对象都有着相同的特性,又有着各自独特的地方。
基本结构如下:
①、超类,或许可设计成抽象的abstract
一些公用的属性(被子类调用)
一些公用的方法(被子类覆写)
②、子类,个数较多,继承超类
得到超类公用方法,覆写
③、工厂
工厂用于构建,以多态的方式,通过条件判断得到子类(生产方法多为静态static)
④、调用者
传入关键性判断参数调用工厂
以超类的名义生产子类(多态)
给超类的公用属性赋值
以超类的名义调用被覆写公用方法,达到预期的效果
示例代码:模拟简单的加减运算
①、超类#########################################
/** * 超类,封装数据 */public abstract class Operation { private double num1; //公用属性1 private double num2; //公用属性2 public abstract void getResult(); //公用方法 public double getNum1() { return num1; } public void setNum1(double num1) { this.num1 = num1; } public double getNum2() { return num2; } public void setNum2(double num2) { this.num2 = num2; }}
②、子类#########################################
/** * 子类1 */public class AddClass extends Operation{ @Override public void getResult() { // TODO Auto-generated method stub System.out.println("运算结果为:"+(this.getNum1()+this.getNum2())); }}
/** * 子类2 */public class SubClass extends Operation{ @Override public void getResult() { // TODO Auto-generated method stub System.out.println("运算结果为:"+(this.getNum1()-this.getNum2())); }}
③工厂#########################################
/** * 工厂 */public class OperFactory { //生产方法 public static Operation getInstance(char symble){ Operation op = null; switch (symble) { case '+': op = new AddClass(); break; case '-': op = new SubClass(); break; } return op; }}
④调用者#########################################
public class Test { public static void main(String[] args) throws Exception { //关键参数“+”,工厂以超类名义生产子类,实际生产的是AddClass Operation op = OperFactory.getInstance('+'); op.setNum1(1); //公用参数1赋值 op.setNum2(2); //公用参数2赋值 op.getResult(); //公用方法调用,调用被AddClass类覆写的getResult()方法 }}
- 一、简单工厂模式
- 一 简单工厂模式
- 一、简单工厂模式
- 一、简单工厂
- (一)简单工厂模式
- (一)简单工厂模式
- 一 简单工厂模式
- 一、简单工厂模式
- 一、简单工厂模式
- 一、简单工厂模式
- 简单工厂模式(一)
- 一、简单工厂
- 工厂模式(一)--简单工厂模式
- 工厂设计模式一 简单工厂模式
- 模式一(简单工厂)
- 简单工厂模式(一)
- (一)简单工厂模式
- 设计模式一 简单工厂
- 一次初始化-pthread_once_t pthread_once 函数
- mysql修复问题表
- Ext给GridPanel上指定的行制定颜色
- 求已排序数组中和为某个数的两个数
- mysql binlog操作
- 一、简单工厂
- 关于商城系统中商品类别的设计(续篇)
- 卡特兰数
- Java的Runtime Exception和Checked Exception区别及使用场景
- android四大组件之服务(Service)
- web编程技术点摘录(一)
- struct resource
- 移动互联网时代广告将走向本地化
- C# 结构与类的异同