zoukankan      html  css  js  c++  java
  • Factory Method模式

    书上说用模版方法来生成实例,就是工厂方法模式了

    而这里的工厂方法要分为两部分,一是工厂框架,二是产品框架。而这个工厂框架包括产品类和工厂类,产品框架则是产品类和工厂类的具体产品实现类和工厂实现类。所以,具体的如下面所示

    框架

    抽象工厂->创建抽象产品

    具体实现类

    具体工厂->创建具体产品类

    继承关系是

    抽象工厂->由具体工厂来实现

    抽象产品->由具体产品来实现

    下面来具体的coding

    1,框架类,包括抽象产品和抽象工厂类

    package factorymethod;
    
    public abstract class ProductFactory {
        //生产产品
        public abstract Product create(String name);
        //注册产品
        public abstract void regist(Product product);
    }
    抽象工厂
    package factorymethod;
    
    public abstract class Product {
        //抽象方法
        public abstract void use();
    }
    抽象产品

    2,具体产品类,包括具体产品和具体工厂

    package factorymethod;
    import java.util.*;
    
    public class IdCardProductFactory extends ProductFactory {
        private List<Product> plist;
        
        
        public List<Product> getPlist() {
            return plist;
        }
    
        public void setPlist(List<Product> plist) {
            this.plist = plist;
        }
    
        @Override
        public Product create(String name) {
            return new IdCardProduct(name);
        }
    
        @Override
        public void regist(Product product) {
            plist.add(product);
        }
    
    }
    具体工厂
    package factorymethod;
    
    public class IdCardProduct extends Product {
        private String idName;
        
        
        public String getIdName() {
            return idName;
        }
    
        public void setIdName(String idName) {
            this.idName = idName;
        }
    
        IdCardProduct(String name){
            this.idName = name;
        }
        
        @Override
        public void use() {
            System.out.println("正在使用"+this.idName+"的身份信息");
        }
    
    }
    具体产品

    3,测试类

    package factorymethod;
    
    public class maintest {
    
        public static void main(String[] args) {
            ProductFactory pf = new IdCardProductFactory();
            Product p = pf.create("lee");
            Product p2 = pf.create("wei");
            p.use();
            p2.use();
        }
    
    }
    测试方法
    正在使用lee的身份信息
    正在使用wei的身份信息
    运行结果
  • 相关阅读:
    JSP脚本指令
    JSP编译指令——page、include
    c++基础(三):多态
    c++基础(一):数据类型和结构
    c++基础(二):成员he派生类
    python小算法(二)
    python的内存管理
    初识java之Mina(一)
    python的小爬虫的基本写法
    python小算法(一)
  • 原文地址:https://www.cnblogs.com/ningheshutong/p/6687453.html
Copyright © 2011-2022 走看看