设计模式-创建型模型

1、工厂模式

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

通俗的讲,工厂模型的本质就是用工厂方法代替new操作创建一种实例化对象的方式,以提供一种方便地创建有同种类型接口的产品的复杂对象。

以创建手机为例:

(1)定义接口:

public interface Phone {
    String brand();
}

(2)定义实现类:

public class Iphone implements Phone {
    @Override
    public String brand() {
        return "this is a Apple phone";
    }
}

public class HuaWei implements Phone {
    @Override
    public String brand() {
        return "this is a Huawei phone";
    }
}

(3)定义工厂类:

public class factory_model {
    public Phone createPhone (String phoneName){
        if("Apple".equals(phoneName)){
            return new Iphone();
        }else if("HuaWei".equals(phoneName)){
            return new HuaWei();
        }else {
            return null;
        }
    }
}

(4)使用工厂模式:

public class Main {
    public static void main(String[] args) {
        factory_model factory = new factory_model();
        Phone huawei = factory.createPhone("HuaWei");
        Phone apple = factory.createPhone("Apple");
        System.out.println(huawei.brand());
        System.out.println(apple.brand());
    }
}

2、抽象工厂模式

抽象工厂模式在工厂模式上添加了一个创建不同工厂的抽象接口,该接口可叫做超级工厂。

在使用过程中,我们首先通过抽象接口创建出不同的工厂对象,然后根据不同的工厂对象创建不同的对象。

以不同品牌工厂生产手机和电脑为例:

(1)手机类产品的接口定义:

public interface Phone {
    String call();
}

(2)手机类产品的实现类定义:

public class PhoneApple implements Phone {
    @Override
    public String call() {
        return " call somebody by apple phone";
    }
}

public class PhoneHuaWei implements Phone {
    @Override
    public String call() {
        return " call somebody by huawei phone";
    }
}

(3)电脑类产品的接口定义:

public interface Computer {
    String internet();
}

(4)电脑类产品的实现类定义:

public class ComputerApple implements Computer {
    @Override
    public String internet() {
        return "surf the internet by apple computer";
    }
}

public class ComputerHuaWei implements Computer {
    @Override
    public String internet() {
        return "surf the internet by huawei computer";
    }
}

(5)抽象工厂定义:

public abstract class AbstractFactory {
    public abstract Phone createPhone(String brand);
    public abstract Computer createComputer(String brand);
}

(6)手机工厂类的定义:

public class PhoneFactory extends AbstractFactory {

    @Override
    public Phone createPhone(String brand) {
        if("Apple".equals(brand)){
            return new PhoneApple();
        }else if("HuaWei".equals(brand)){
            return new PhoneHuaWei();
        }else {
            return null;
        }
    }

    @Override
    public Computer createComputer(String brand) {
        return null;
    }
}

(7)电脑工厂类的定义:

public class ComputerFactory extends AbstractFactory {

    @Override
    public Phone createPhone(String brand) {
        return null;
    }

    @Override
    public Computer createComputer(String brand) {

        if("Apple".equals(brand)){
            return new ComputerApple();
        }else if("HuaWei".equals(brand)){
            return new ComputerHuaWei();
        }else {
            return null;
        }
    }
}

(8)使用抽象工厂:

public class Main {
    public static void main(String[] args) {
        AbstractFactory phoneFactory = new PhoneFactory();
        Phone phoneApple = phoneFactory.createPhone("Apple");
        Phone phoneHuaWei = phoneFactory.createPhone("HuaWei");
        System.out.println(phoneApple.call());
        System.out.println(phoneHuaWei.call());

        AbstractFactory computerFactory = new ComputerFactory();
        Computer computerApple = computerFactory.createComputer("Apple");
        Computer computerHuaWei = computerFactory.createComputer("HuaWei");
        System.out.println(computerApple.internet());
        System.out.println(computerHuaWei.internet());
    }
}

原文地址:https://www.cnblogs.com/strong-FE/p/12114687.html

时间: 2024-10-08 02:36:13

设计模式-创建型模型的相关文章

设计模式3 创建型模型

设计模式3 创建型模型 目录: 简单工厂模式 工厂方法模式 抽象工厂模式 单例模式 简单工厂 模型 [email protected]:~$ cat main.cpp  //设计模式:简单工厂 模型 #include<iostream> using namespace std; class Fruit { public: Fruit(string kind) { this->kind = kind; if(kind == "apple") {} else if (ki

C#设计模式-创建型模式(转)

一.简单工厂模式 简单工厂模式Simple Factory,又称静态工厂方法模式.它是类的创建模式.是由一个工厂对象决定创建出哪一种产品类的实例,是不同的工厂方法模式的一个特殊实现. 优点: u 模式的核心是工厂类,该类中含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅负责"消费"产品. u 简单工厂模式实现了对责任的分割. 缺点: u 当产品类有复杂的多层次等级结构时,工厂类只有它自己.以不变应万变. u 模式中工厂类集中了所

JDK 源码 阅读 - 2 - 设计模式 - 创建型模式

A.创建型模式 抽象工厂(Abstract Factory) javax.xml.parsers.DocumentBuilderFactory DocumentBuilderFactory通过FactoryFinder实例化具体的Factory. 使用例子: DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilder

设计模式——创建型模式

简单的说我们可以把23种设计模式可以归为三大类,分别是创建型模式.结构型模式和行为型模式. 今天,首先看一下创建型模式.创建型设计模式包括5种:单例模式(Singleton).工厂方法模式(Factory Method).抽象工厂模式(Abstract Factory).建造者模式(Builder).原型模式(Prototype).  1.单例模式(Singleton)        1)简介 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的软件设计模式.在它的核心结

【C#设计模式——创建型模式】抽象工厂模式

抽象工厂模式比工厂模式具有更高层次的抽象性.当要返回一系列相关类中的某一个,而每个类都能根据需要返回不同的对象时,可以选择这种模式.直接进入示例. 示例描述:完成花园的规划,多种花园种类,每个里面多种植物 编写一个基类Garden,Garden就是抽象工厂.它定义了具体类中的方法,并返回一系列相关类中的某个类. public class Garden { protected Plant center, shade, border; protected bool showCenter, showS

【C#设计模式——创建型模式】工场方法模式

工场方法模式对简单工场模式进行了乔庙的扩展,不是用一个专门的类来决定实例化哪一个子类.相反,超类把这种决定延迟到每个子类.这种模式实际上没有决策点,就是没有直接选择一个子类实例化的决策. 看书上的例子有点复杂,自己写了一个简单例子: 示例目标:对数组进行定向排序 基类FormatList对指定数组进行排序,具体实现交给子类实现 public abstract class FormatList { public int[] result; protected abstract void Forma

设计模式-创建型模式-工厂模式

创建型模式是为了隔离客户程序与具体类型实例化的依赖关系,通过将实例化职责委托他方法对象的方法,保证客户程序(或外部系统)获得期望具体类型实例的同时不必发生直接的引用. 概念: 工厂方法是整个创建型模式中最为典型的.也是最具启发效果的,它告诉我们使用一个变化频率比较高的类不比忙着new(),而是要依赖一个抽象的类型(抽象类或者接口).Delegate也是一个抽象,与抽象类型不同,它是对一类方法的抽象,而不像前两者是对一组方法的抽象.哪一种更好呢. 尺有所长,寸有所短. 如果需要的仅仅是某个特定的操

设计模式---创建型模式

一.概况 总体来说设计模式分为三大类: (1)创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. (2)结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. (3)行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式的六大原则 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修

java设计模式--创建型模式

2016-04-24 10:10:34 创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 注意:工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory)  这三种模式从上到下逐步抽象,并且更具一般性.GOF在<设计模式>一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory).将简单工厂模式