接口实际应用-工厂代理模式

 1 package cn.demo;
 2 interface Subject{
 3     public void get();
 4 }
 5 class RealSubject implements Subject{
 6     public void get(){
 7         System.out.println("吃饭");
 8     }
 9 }
10 class Factory{
11     public static Subject getInstance(String charName){
12         if("real".equals(charName)){
13             return new RealSubject();
14         }
15         return null;
16     }
17 }
18 class Proxy implements Subject{
19     private Subject sub;
20     public Proxy(){
21         this.sub = Factory.getInstance("real");
22     }
23     public void prepare(){
24         System.out.println("饭前洗手");
25     }
26     public void get(){
27         this.prepare();
28         this.sub.get();
29         this.after();
30     }
31     public void after(){
32         System.out.println("收拾餐桌");
33     }
34 }
35 public class Test{
36     public static void main(String args[]){
37         Subject s =new Proxy();
38         s.get();
39     }
40 }

结果:

饭前洗手
吃饭
收拾餐桌

时间: 2024-08-03 23:13:36

接口实际应用-工厂代理模式的相关文章

五、 接口延伸出的代理模式

示例: // 主题接口:定义了核心功能 interface Subject { public abstract void eat(); } // 核心主题:实现了主题接口,并且只实现核心功能 class RealSubject implements Subject { public void eat() { System.out.println("核心主题RealSubject要XXXX"); } } // 代理主题:实现了主题接口,完成核心主题的辅助性工作 class ProxySu

JAVA学习--接口的应用:代理模式

1 public class TestProxy { 2 public static void main(String[] args) { 3 Object obj = new ProxyObject(); 4 obj.action(); 5 } 6 } 7 8 interface Object{ 9 void action(); 10 } 11 //代理类 12 class ProxyObject implements Object{ 13 Object obj; 14 15 public P

设计模式 代理模式之静态代理

静态代理要搞清楚三个关系:客户类   代理类   委托类  代理类的行为要类似且强于委托类(实现方法有1.继承,2.代理类与委托类实现共同的接口(首选)) /** * 用静态代理模式完成日志的操作 * @author Administrator * */public class UserAction { private UserDao userDao = UserDaoFac.newUserDao(); public void add(){ System.out.println("=======

C#设计模式——工厂方法模式

一.引言 在简单工厂中讲到简单工厂模式的缺点,有一点是--简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方法模式可以解决简单工厂模式中存在的这个问题,下面就具体看看工厂模式是如何解决该问题的. 二.工厂方法模式的实现 工厂方法模式之所以可以解决简单工厂的模式,是因为它的实现把具体产品的创建推迟到子类中,此时工厂类不再负责所有产品的创建,而只是给出具体工厂必须实现的接口,这样工厂方法模式就可以允许系统不修改工厂类逻辑的

设计模式——3.工厂方法模式

1. 模式动机 学习完简单工厂模式之后,现在对该系统进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成,我们先定义一个抽象的按钮工厂类,再定义具体的工厂类来生成圆形按钮.矩形按钮.菱形按钮等,它们实现在抽象按钮工厂类中定义的方法.这种抽象化的结果使这种结构可以在不修改具体工厂类的情况下引进新的产品,如果出现新的按钮类型,只需要为这种新类型的按钮创建一个具体的工厂类就可以获得该新按钮的实例,这一特点无疑使得工厂方法模式具有超越简单工厂模式的优

工厂方法模式(Factory Method Pattern)

2. 工厂方法模式(Factory Method Pattern) 2.1. 模式动机 现在对该系统进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成,我们先定义一个抽象的按钮工厂类,再定义具体的工厂类来生成圆形按钮.矩形按钮.菱形按钮等,它们实现在抽象按钮工厂类中定义的方法.这种抽象化的结果使这种结构可以在不修改具体工厂类的情况下引进新的产品,如果出现新的按钮类型,只需要为这种新类型的按钮创建一个具体的工厂类就可以获得该新按钮的实例,这一

设计模式之六:工厂方法模式(Factory method Pattern)

工厂方法(Factory Method)模式就是定义一个创建对象的工厂接口,将实际创建工作推迟到子类当中. 核心工厂类不再负责具体产品的创建,仅提供了具体工厂子类必须实现的接口,这样核心类成为一个抽象工厂角色,这样做的好处是工厂方法模式可以使系统在不修改具体工厂角色的情况下进行引进新的产品. 在Factory Method模式中,工厂类与产品类往往具有平行的等级结构,它们之间一一对应. 从上图可以看出,工厂方法模式有四个角色: 抽象工厂角色(ICreator):是工厂方法模式的核心,与应用程序无

工厂方法模式概述

工厂方法模式概述 在简单工厂模式中只提供一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它需要知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类.简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,需要在其中加入必要的业务逻辑,这违背了“开闭原则”.此外,在简单工厂模式中,所有的产品都由同一个工厂创建,工厂类职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度高,严重影响了系统的灵活性和扩展性,而工厂方法模式则可以很好地解决这一问题. 在工厂方法模式中,我们不再

java/android 设计模式学习笔记(9)---代理模式

这篇博客我们来介绍一下代理模式(Proxy Pattern),代理模式也成为委托模式,是一个非常重要的设计模式,不少设计模式也都会有代理模式的影子.代理在我们日常生活中也很常见,比如上网时连接的代理服务器地址,更比如我们平时租房子,将找房子的过程代理给中介等等,都是代理模式在日常生活中的使用例子. 代理模式中的代理对象能够连接任何事物:一个网络连接,一个占用很多内存的大对象,一个文件,或者是一些复制起来代价很高甚至根本不可能复制的一些资源.总之,代理是一个由客户端调用去访问幕后真正服务的包装对象