zoukankan      html  css  js  c++  java
  • 依赖倒转原则与合成复用原则---实例

    依赖倒转原则与合成复用原则

    在一画图软件中提供了多种大小不同的画笔,并且可以给画笔指定不同的颜色,某设计人员对画笔进行了如上图所示的设计。通过分析,可以发现增加画笔的种类和颜色会使得系统中类的数目急剧增加,请根据合成复用原则和依赖倒转原则对上述设计进行重构。

    依赖倒转原则程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

    合成复用原则它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现

    重构后的类图:

     

    依赖倒转原则与合成复用原则:利用合成复用原则与依赖倒转原则,根据Pen的大小与颜色编写两个抽象类SizeColor;底层具体类extends抽象类(泛化关系),高层Pen类由SizeColor聚合而来(聚合关系);

    代码实现:

    型号抽象类

    public abstract class Size {
    public abstract void sizePen();
    }

    具体型号类

    public class SmallPen extends Size{
    //小型
    public void sizePen() {
    System.out.println("小型");
    }
    }
    public class MiddlePen extends Size{
    //中型
    public void sizePen() {
    System.out.println("中型");
    }
    }
    public class BigPen extends Size{
    //大型
    public void sizePen() {
    System.out.println("大型");
    }
    }

    颜色抽象类

    public abstract class Color {
    public abstract void colorPen();
    }

    具体颜色类

    public class GreenPen extends Color{
    public void colorPen() {
    System.out.println("绿色");
    }
    }

    public class RedPen extends Color{

    
    

    public void colorPen() {

    
    

    System.out.println("红色");

    
    

    }

    
    

    }

     

    钢笔

    public class Pen {
    //钢笔
    private Size size;
    private Color color;
    public Size getSize() {
     return size;
    }
    public void setSize(Size size) {
     this.size = size;
    }
    public Color getColor() {
     return color;
    }
    public void setColor(Color color) {
     this.color = color;
    }
    }

    聚合钢笔

    public class MianClass {
    public static void main(String[] args) {
    //颜色大小随意组合
    Pen pen=new Pen();
    //组合小型红色钢笔
    pen.setSize(new SmallPen());
    pen.setColor(new RedPen());
    //组合大型绿色钢笔
    pen.setSize(new BigPen());
    pen.setColor(new GreenPen());
    }
    }

     

  • 相关阅读:
    EditPlus 3.7 中文版已经发布
    消息队列
    工作授权系统
    MFC学习指南大纲
    亲爱的项目经理,我恨你
    那些性感的让人尖叫的程序员
    8个经典的HTML5游戏在线试玩及源码学习
    生活小插曲
    WPF开发技术介绍
    工作总结:MFC自写排序算法(升序)
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/12031473.html
Copyright © 2011-2022 走看看