package com.donnie;
//单向适配器模式
/*class ReadStrFromFile{
public void read(){
System.out.println("从文件上读取字符串");
}
}
class Convert{
public void toUpper(){
System.out.println("转大写");
}
}
class SubReadStrFromFile extends ReadStrFromFile{
private Convert convert;
public SubReadStrFromFile(Convert convert){
this.convert=convert;
}
public void read(){
super.read();
convert.toUpper();
}
}
public class Decorate {
public static void main(String args[]){
SubReadStrFromFile sf=new SubReadStrFromFile(new Convert());
sf.read();
}
}*/
//-----------------------------------------
/*单向适配器模式是在主模块上接入一个扩展模块,用继承方法
* 优势是:能够很好的应付扩展模块的切换
* 缺陷:扩展模块无法很好的应付主模块的切换
* 假如上面的扩展模块Convert为主模块ReadStrFromFile服务,但又得为另一个主模块ReadStrFromNet服务
* 单向适配器,就必须得为ReadStrFromNet再写一个子类,这样就麻烦
*/
//装饰模式要点,主模块的接口注入扩展模块
interface Iread{
public abstract void read();
}
class ReadStrFromFile implements Iread{
public void read(){
System.out.println("从文件上读取字符串");
}
}
class ReadStrFromNet implements Iread{
public void read(){
System.out.println("从网络上读取字符串");
}
}
class Convert {
private Iread iread;
public Convert(Iread iread){
this.iread=iread;
}
public void toUpper(){
iread.read();
System.out.println("转大写");
}
}
public class Decorate {
public static void main(String args[]){
Convert ct=new Convert(new ReadStrFromNet());
ct.toUpper();
}
}
/*
* 现实中案例java读中文的方法就是用到装饰模式
* FileReader fis= new FileReader(“filaname”);
BufferedReader br= new BuffreedReader(fis);
单向适配器模式与装饰模式要点相比,就是考滤,哪些模块切换的可能性大些
模式提供了一个解决方案,它是一种设计方法
为了降低耦合性增加灵活性
Spring是提供了降低耦合性的一种工具
设计模式提供了常见应用中降低耦合性的设计思想
具体问题还得具体分析*/
分享到:
相关推荐
- **结构型模式**:包括适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式。 - **行为型模式**:包括职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式...
Java模式与设计概念是软件开发中的核心思想,它们帮助我们构建可维护、可扩展且高效的代码。这些概念包括类与类之间的各种关系,如继承、关联、聚合和合成,以及设计原则,如“开-闭”原则、里氏代换原则、依赖倒转...
结构型模式涉及如何组合类和对象以形成更大的结构,例如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy)等,这些模式帮助我们在不修改原有代码的情况下扩展功能。行为型模式则关注对象之间的...
18. **前端设计模式**:常见的有单例模式、工厂模式、观察者模式、装饰器模式、代理模式等,用于提高代码复用性和维护性。 19. **React/Redux设计模式**:如单例模式用于Store,工厂模式用于Action Creator,观察者...
从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。 12、...
* **应用场景**: 显示屏背光、装饰照明等场合。 #### 十六、E-Fuse & Load Switches **1. USB Load Switches** * **描述**: 提供USB负载开关解决方案。 * **应用场景**: 需要控制USB端口供电的应用场合。 **2. E...