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的身份信息
    运行结果
  • 相关阅读:
    WCF 第十三章 可编程站点 为站点创建操作
    WCF 第十三章 可编程站点 所有都与URI相关
    WCF 第十二章 对等网 使用自定义绑定实现消息定向
    WCF 第十三章 可编程站点 使用WebOperationContext
    Using App.Config for user defined runtime parameters
    WCF 第十三章 可编程站点
    WCF 第十三章 可编程站点 使用AJAX和JSON进行网页编程
    WCF 第十二章 总结
    WCF 第十三章 可编程站点 使用WebGet和WebInvoke
    WCF 第十三章 可编程站点 URI和UriTemplates
  • 原文地址:https://www.cnblogs.com/ningheshutong/p/6687453.html
Copyright © 2011-2022 走看看