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的身份信息
    运行结果
  • 相关阅读:
    Node基础篇(模块和NPM)
    Node基础篇(概要)
    配置Chrome支持本地(file协议)的AJAX请求
    关于 WP 开发中.xaml 与.xaml.cs 的关系
    Windows Phone 8.1又有什么新花样
    简单聊聊今天微软的变化
    Entity Framework入门系列(1)-扯淡开篇
    一个简单的文件服务器实现方案
    网站优化之页面级缓存方案
    Windows下Memcached安装与配置实例
  • 原文地址:https://www.cnblogs.com/ningheshutong/p/6687453.html
Copyright © 2011-2022 走看看